Задать вопрос

Как найти элемент в массиве через 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 ищу и не первого уровня?
  • Вопрос задан
  • 245 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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); // нужный массив
Ответ написан
Ваш ответ на вопрос

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

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