搜索多维数组并返回键

时间:2016-05-28 17:58:51

标签: php arrays

我试图查看此数组中是否存在某个值,如果存在,则返回键:

$letter = 'B';

$array[0]['ID'] = 1;
$array[0]['Find'] = 'A';
$array[1]['ID'] = 2;
$array[1]['Find'] = 'B';

$found = array_search($letter, $array);

if ($found) { 

  unset($array[$found]);

}

据我所知,这不是在找到值时丢弃数组元素。有什么建议吗?

3 个答案:

答案 0 :(得分:4)

如果您正在查看该特定列:

$found = array_search($letter, array_column($array, 'Find'));
unset($array[$found]);
  • 这是一个多维数组,因此请提取Find列并搜索
  • 如果unset()不唯一
  • ,您需要循环和Find

或者替代:

$array = array_column($array, null, 'Find');
unset($array[$letter]);
  • 提取所有列,但按Find对其进行索引,这样您就可以unset()

答案 1 :(得分:2)

使用array_filter仅保存没有B

的元素
$arrayWithoutB = array_filter($array, 
                function($i) use($letter){  return $i['Find'] != $letter; });

答案 2 :(得分:0)

如果您要在Find字段中进行搜索,并在示例中返回相应的ID字段,则希望在第四行中匹配: $array[1]['Find'] = 'B';

然后你需要实际迭代外部维度:

foreach ($a in $array) {
  if ($a['Find'] == $letter) {
    // found, return the ID field
    return $a['ID'];
  }
}

如果您想要返回其他内容,请告诉我,希望这会有所帮助:)