2017-06-16 195 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; 
     } 
} 
相关问题