我有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()
,但我总是看到双重名称......
答案 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>';
}
}