PHP:检查对象是否包含数组中的值

时间:2017-06-16 14:17:48

标签: php arrays

我一直在这里寻找答案,但我无法找到我需要的东西。

我使用的是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,但它没有用。

谢谢你!

2 个答案:

答案 0 :(得分: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()!
}

?>

这可以通过将数组交叉移动到if语句中来缩短,但我打破这两个会更容易阅读。

我希望这会有所帮助。

答案 1 :(得分:0)

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