Как найти элемент в массиве через array_column?

Простите что-то тупою, дан массив многомерный, как узнать есть ли в нём на втором уровне элемент с "id" = 3 (в данном случае нет)
array(3) {
  [0]=>
  array(2) {
    ["id"]=>
    string(1) "1"
    ["fio"]=>
    string(38) "раз"
  }
  [1]=>
  array(2) {
    ["id"]=>
    string(1) "2"
    ["fio"]=>
    string(38) "два"
  }
  [2]=>
  array(2) {
    ["id"]=>
    string(1) "4"
    ["fio"]=>
    string(38) "четыре"
  }
}

array_search() подойдёт для данного случая? Как там указать что именно id ищу и не первого уровня?
  • Вопрос задан
  • 241 просмотр
Решения вопроса 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Если у вас не динозавровая версия php, то вот так:
$a = [
    [
        'id' => '1',
        'fio' => 'раз',
    ],
    [
        'id' => '2',
        'fio' => 'два',
    ],
    [
        'id' => '4',
        'fio' => 'четыре',
    ],
];

var_dump(array_search(3, array_column($a, 'id')) !== false); // false
var_dump(array_search(1, array_column($a, 'id')) !== false); // true
Ответ написан
Комментировать
qonand
@qonand
Software Engineer
rpsv
@rpsv
делай либо хорошо, либо никак
Можно так:
$data = [...];
$need = array_reduce($data, function($acc, $item) {
	if ($item['id'] == 3) {
		$acc[] = $item;
	}
	return $acc;
}, []);

if ($need) {
	// какие то элемент найдены
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@PavelFokeev
pavl1k.ru
foreach($array as $a) if($a['id']=='3') var_dump($a); // нужный массив
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы