PHP:检查对象是否包含数组中的值
我一直在寻找答案,但找不到我需要的东西。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尝试,但它不工作。
谢谢!
假设$ 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语句,但我虽然打破了三分之二会更容易阅读。
我希望这会有所帮助。
谢谢你的回答。 $ 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
$CASH = $EC = $POSCOM = array();
foreach ($CSS -> result() as $object){
if (in_array($object->PAYMETHOD, array("CASH","EC","POSCOM"))
{
${$object->PAYMETHOD}[] = $object;
}
}
您的输入是什么? '$ daxArt','$ CSS','$ Cash'等是什么? – Halcyon
你的意思是'in_array()'或'array_keys()'函数? – Jer
'我试着用in_array,但它不起作用.'试过了什么?你只发布了调试这个 – Machavity