2017-06-16 185 views
-1

我一直在尋找答案,但找不到我需要的東西。PHP:檢查對象是否包含數組中的值

我使用codeigniter 3但我的問題是與PHP語法/邏輯。

局勢:

我有3個數組包含正確的值。我需要將這些數組與其他數組進行比較。

$t = $daxArt -> result(); 

    foreach ($CSS -> result() as $object){  

     if ($object -> PAYMETHOD == "CASH"){ 

      array_push ($Cash , $object);  

     } 
     if ($object -> PAYMETHOD == "EC" ){ 

      array_push ($EC , $object);  

     } 
     if ($object -> PAYMETHOD == "POSCOM"){  

      array_push ($POSCOM , $object); 
     } 
    } 

現在我必須做這樣的事情:

if ($Cash contains one of the value $daxArt){ 
    <---- here is my problem - add to new array. 
} 

我in_array嘗試,但它不工作。

謝謝!

+0

您的輸入是什麼? '$ daxArt','$ CSS','$ Cash'等是什麼? – Halcyon

+0

你的意思是'in_array()'或'array_keys()'函數? – Jer

+0

'我試着用in_array,但它不起作用.'試過了什麼?你只發布了調試這個 – Machavity

回答

0

假設$ daxArt,$ CSS,$ Cash等都包含類似的對象,您可以執行以下操作。

經過初始處理後,您可以使用array_intersect()這將比較兩個數組並返回一個只存在於兩者中的值的單個數組。

因此,例如,你可以做到以下幾點:

<?php 

$t = $daxArt->result(); 

foreach($css->result() as $object){ 
    if ($object->PAYMETHOD == "CASH"){ 
     array_push ($Cash , $object);  
    } 

    if ($object->PAYMETHOD == "EC"){ 
     array_push ($EC , $object);  
    } 

    if ($object->PAYMETHOD == "POSCOM"){  
     array_push ($POSCOM , $object); 
    } 
} 

//Get values for each of the $Cash, $EC, $POSCOM that are in $daxArt->result(); 
$cashDaxArt = array_intersect($Cash, $t); 
$ecDaxArt = array_intersect($EC, $t); 
$poscomDaxArt = array_intersect($POSCOM, $t); 

//Check if cash contained values returned by $daxArt->result(); 
if(!empty($cashDaxArt)){ 
    //$Cash contained a value in $daxArt->result()! 
} 

?> 

這可以shortend,通過移動陣列相交成if語句,但我雖然打破了三分之二會更容易閱讀。

我希望這會有所幫助。

+0

謝謝你的回答。 $ Cash,$ EC,$ POSCOM具有相同的數據結構,如下所示:// array(182){[0] => object(stdClass)#49(5){[「ARTICLENO」] => string(3 )「100」[「DESCRIPTION」] => string(28)「xxxxx」[「REVENUE」] => string(5)「10501」etc .....和$ t看起來像這樣,只包含數字://array(24){[0] => object(stdClass)#22(1){[「articleNumero」] => string(7)「2010102」} [1] => object(stdClass)#23(1) {[「articleNumero」] =>字符串(4)「9999」} etc .....現在我想比較文章Numero和ARTICLENO $ Cash,$ EC和$ POSCOM。如果它們相等,則將該文章添加到新的數組中。 – MLAZ

0
$CASH = $EC = $POSCOM = array(); 
foreach ($CSS -> result() as $object){  
     if (in_array($object->PAYMETHOD, array("CASH","EC","POSCOM")) 
     { 
       ${$object->PAYMETHOD}[] = $object; 
     } 
}