2010-06-18 2 views
2

У меня есть массив массивов. Внутренний массив выглядит так.Сортировка по определенному ключу многомерного массива PHP

Array 
    (
     [comparisonFeatureId] => 1188 
     [comparisonFeatureType] => Category 
     [comparisonValues] => Array 
      (
       [0] => Not Available 
       [1] => Not Available 
       [2] => Not Available 
       [3] => Standard 
      ) 

     [featureDescription] => Rear Reading Lamps 
     [groupHeader] => Convenience 
    ) 

Итак, у меня есть массив вышеупомянутого массива, и мне нужно отсортировать массив по признаку FeatureDescription. Есть ли способ сделать это, используя одну из внутренних функций PHP?

ответ

2

Посмотреть список всех сортировочных функций РНР здесь: http://php.net/manual/en/array.sorting.php

Вы, наверное, хотите usort().

<?php 

function myCmp($a, $b) 
{ 
    return strcmp($a["featureDescription"], $b["featureDescription"]); 
} 

usort($myArray, "myCmp"); 
+0

Спасибо, что работает отлично – dnaluz

1

Одним из способов было бы использовать функцию array_multisort. Единственным недостатком этого является то, что вам требуется копия всех значений FeatureDescription (с быстрым foreach для примера) с первого уровня вашего массива.

$featureDescriptionValues = array();  
foreach ($myArray as $node) 
{ 
    $featureDescriptionValues[] = $node['featureDescription']; 
} 

array_multisort($myArray, $featureDescriptionValues, SORT_STRING, SORT_ASC); 

Важно, что $featureDescriptionValues появляются в том же порядке, как они представлены в $myArray.

Смежные вопросы