在数组中搜索值,如果没有找到则添加

时间:2015-05-04 08:49:25

标签: php arrays search

我有一个格式如下:

$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'),
  );

你能告诉我我的代码有什么问题吗?

1 个答案:

答案 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];
    }
}