PHP поиск элемента в двумерном массиве

468
08 мая 2017, 03:01
$arr = array(
   array('a' => 2, 'b' => 15),
   array('a' => 3, 'b' => 15),
   array('a' => 4, 'b' => 2),
   array('a' => 8, 'b' => 3),
   array('a' => 15, 'b' => 1),
);

Есть переменная $a со значением 5 или 3. Или же есть переменная $b с каким-то значением.

Как узнать без перебора в цикле, т.е. без сторонних функций, совпадает ли значение переменной $a с любым элементом массива $arr по полю 'a'. Тоже самое с переменной $b? Что-то типа in_array() или array_search().

Answer 1

Можно воспользоваться функцией array_column, чтобы получить массив значений нужной колонки, например

$a = 3;
if(in_array($a, array_column($arr, 'a'))) {
   echo 'yes'; 
}
Answer 2

Вариант для PHP <= 5.4

$arr = array(
   array('a' => 2, 'b' => 15),
   array('a' => 3, 'b' => 15),
   array('a' => 4, 'b' => 2),
   array('a' => 8, 'b' => 3),
   array('a' => 15, 'b' => 1),
);
// Искомое значчение
$srch = 15;
array_filter($arr, function($a) use (&$int, $srch) {
    return (array_search($srch, $a)) ? ++$int : false;
});
// Количество совпадений
echo ($int ? $int : 0);// 3
READ ALSO
Удаленная авторизация на сайте PHP CURL

Удаленная авторизация на сайте PHP CURL

Добрый вечерНе получается выполнить удаленный логин на сайт one-team

422
Как парсить информацию с другого сайта, заполняя там поля?

Как парсить информацию с другого сайта, заполняя там поля?

Есть сайт университета и на нем есть расписание пар(http://bseuby/schedule/), так вот хотелось бы парсить это расписание себе на сайт, а там просто для...

354
Using hunspell program in c++ project [требует правки]

Using hunspell program in c++ project [требует правки]

My goal is to write a c++ project, that will be able to use hunspell functionsI'm not that good of a programmer yet, but I am trying

274
Что такое атрибуты в C++?

Что такое атрибуты в C++?

Начиная со стандарта c++11 в языке появились так называемые "атрибуты", что это такое и зачем они нужны?

431