比较来自2个foreach循环的现有值?

时间:2015-02-11 10:06:41

标签: php if-statement foreach

我有2个foreach循环,我从第一个db获得新结果,我有第二个foreach,我从第二个db获取数据

我的第一个foreach代码是:

foreach($_existing_data_result as $result) {
echo $result->name.'<br>';
}

第二个foreach:

foreach($_new_data_result as $resultNew) {
echo $resultNew->name.'<br>';
}

我需要检查第二个foreach,如果结果存在于第一个然后忽略此结果,我尝试使用in_array(),但我总是看到双重名称......

4 个答案:

答案 0 :(得分:0)

第二个foreach,改为:

foreach($_new_data_result as $resultNew) {
    if (!in_array($resultNew,$_existing_data_result)) 
        echo $resultNew->name.'<br>';
}

这将假设整个$resultNew对象存在于$_existing_data_result并且相同。

答案 1 :(得分:0)

//Use array_diff instead. Like

$new_array = array_diff($_existing_data_result, $_new_data_result);

答案 2 :(得分:0)

首先从第一个数组中获取所有名称:

$names = array_map(
         create_function('$object', 'return $object->name;'),
         $app_items);

然后在第二个foreach中检查名称数组中是否存在名称:

foreach($_new_data_result as $resultNew) {
    if(!in_array($resultNew->name, $names) {
        echo $resultNew->name.'<br>';
    } 
}

答案 3 :(得分:0)

$names = array();
foreach($_existing_data_result as $result) {
    echo $result->name.'<br>';
    $names[$result->name] = 1;
}

foreach($_new_data_result as $resultNew) { 
    if (!isset($names[$resultNew->name])) {
        echo $resultNew->name.'<br>';  
    }
}
相关问题