БлогNot. PHP: поиск и сортировка в массиве массивов

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'
?>

теги: php список поиск

28.10.2019, 15:57; рейтинг: 52