我有一个格式如下:
$array = Array(
Array('id' => 77, 'title' => 'title'),
Array('id' => 43, 'title' => 'title2'),
Array('id' => null, 'title' => 'title3'),
Array('id' => null, 'title' => null),
);
这个数组是动态填充的,这只是一个例子。另外,我有第二个格式为:
的数组$searchingArray = Array('43', '5');
主要想法是搜索$searchingArray
中的值是否在$array
中,如果不存在则添加。我的职责是:
function addId($id, $ignoreIfFound=false) {
foreach ($array as $values) {
if ($values['id'] and $values['id'] == $id) {
if (!$ignoreIfFound) {
$array[] = Array('id' => $id, 'title' => 'test5');
break;
}
else{
// do nothing
}
}else{
$array[] = Array('id' => $id, 'title' => 'test5');
break;
}
}
}
foreach ($searchingArray as $id) {
$this->addId($id, true);
}
对于给定的示例,结果应为:
$array = Array(
Array('id' => 77, 'title' => 'title'),
Array('id' => 43, 'title' => 'title2'),
Array('id' => null, 'title' => 'title3'),
Array('id' => null, 'title' => null),
Array('id' => 5, 'title' => 'test5'),
);
你能告诉我我的代码有什么问题吗?
答案 0 :(得分:1)
这应该适合你:
首先使用array_column()
从数组中提取id
列。在此之后,只需循环搜索数组,并使用in_array()
检查它们是否已存在。如果不是简单地将它添加到数组中。
$ids = array_column($array, "id");
foreach($searchingArray as $search) {
if(!in_array($search, $ids)) {
$array[] = ["id" => $search, "title" => "title" . $search];
}
}