Array
(
[data] => Array
(
[0] => Array
(
[name] => Nicki Escudero
[id] => 27700035
)
[1] => Array
(
[name] => Yorgo Nestoridis
[id] => 504571368
)
)
)
如何使用其名称对此多维数组进行排序?
我尝试使用array_multisort
,但它无效。
答案 0 :(得分:0)
已经排序了:-)你想要排序的是什么?数据来自哪里?如果你从数据库中获取它,你应该有不同的排序。
答案 1 :(得分:0)
如果这些是您拥有的唯一两个值,您可以尝试使id
数组的索引,名称可以是值。然后,您可以使用asort
按名称对数组进行排序,并保持索引值关系。
通过制作id
索引,我的意思是$array[27700035]
会返回Nicki Escudero
。
// Copy the array to a new array.
foreach($array as $val) {
$newArray[$val['id']] = $val['name'];
}
asort($newArray);
编辑:我已阅读了手册,您还可以将usort
与自定义比较功能结合使用。虽然我从来没有使用过这个并且可以提供很少的帮助...... PHP usort
答案 2 :(得分:0)
如果您想使用array_multisort
,请使用以下内容:
$array = array(
'data' => array(
array(
'name' => 'Yorgo Nestoridis',
'id' => 504571368,
),
array(
'name' => 'Nicki Escudero',
'id' => 27700035,
),
),
);
$names = array();
foreach($array['data'] as $datum) {
$names[] = $datum['name'];
}
array_multisort($names, SORT_ASC, $array['data']);
var_dump($array); // now sorted by name
另一种选择是使用自定义比较功能:
function compareNames($a, $b) {
return strcmp($a['name'], $b['name']);
}
usort($array['data'], 'compareNames');