我有两个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>';
}
}