Блог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'
?>

28.10.2019, 15:57 [1689 просмотров]


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

К этой статье пока нет комментариев, Ваш будет первым