PHP: поиск и сортировка в массиве массивов
Обычный поиск в одномерном массиве прекрасно делает стандартная функция array_search, но как быть, если элементы массива - не скалярные, а составные, например, вложенные массивы (записи), состоящие из набора элементов вида ключ=>значение
?
Поможет функция array_column, появившаяся начиная с версии PHP 5.5.
Ниже показан пример кода для поиска, проверенный в XAMPP с PHP 7.X. Также показано, как сортировать массив массивов по строковому и числовому столбцу, конечно, каждый раз нужно передавать функции usort зависящую от типа данных callback-функцию сравнения элементов.
<?php $arr = [ ['name'=>'Ivanov','value'=>200], ['name'=>'Sidorov','value'=>100], ['name'=>'Petrov','value'=>300] ]; //Поиск в массиве массивов по нужному столбцу $needle = 'Sidorov'; $key = array_search ($needle, array_column($arr,'name')); if ($key === false) echo 'Not found!'; else echo 'Found: '.$arr[$key]['name'].','.$arr[$key]['value']; //Сортировка массива массивов по нужному столбцу usort ($arr, function ($a,$b) { return strcmp($a['name'],$b['name']); } ); print '<br>'; print_r ($arr); //отсортировано по строковым значениям 'name' usort ($arr, function ($a,$b) { return $a['value']-$b['value']; } ); print '<br>'; print_r ($arr); //отсортировано по числовым значениям 'value' ?>
28.10.2019, 15:57 [1712 просмотров]