我一直在这里寻找答案,但我无法找到我需要的东西。
我使用的是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 :(得分: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;
}
}