比较两个foreach循环中的现有值


Compare for existing values from 2 foreach loops?

我有两个foreach循环,在那里我从第一个数据库获得新结果,在第二个foreach,我从第二个数据库获得数据

我的第一个foreach代码是:

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

第二前臂:

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

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

第二个foreach,将其更改为:

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

这将在假定整个$resultNew对象存在于$_existing_data_result中并且是相同的情况下工作。

//Use array_diff instead. Like
$new_array = array_diff($_existing_data_result, $_new_data_result);

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

$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>';
    } 
}
$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>';  
    }
}