对多维数组进行排序的最有效方法 (php)
Most efficient way to sort a multidimensional array (php)
我正在寻找对 php.I 中的多维数组进行排序的最有效方法,想按 [result][index][kl][0]
中的值 name
对数组进行排序。最快的方法是什么?我的数组有 100 个元素。
我的数组如下所示:
Array
(
[jsonrpc] => 2.0
[id] => req-002
[result] => Array
(
[0] => Array
(
[type] => subst
[lsid] => 11
[date] => 20150209
[startTime] => 955
[endTime] => 1040
[kl] => Array
(
[0] => Array
(
[id] => 29
[name] => S12UB
)
)
)
[1] => Array
(
[type] => subst
[lsid] => 11
[date] => 20150209
[startTime] => 1045
[endTime] => 1130
[kl] => Array
(
[0] => Array
(
[id] => 29
[name] => S12UB
)
)
)
谢谢。
使用用户定义的排序函数,例如usort
along with strcmp
:
function compareByName($a, $b) {
// the strcmp returns a numeric value above or below 0 depending on the comparison
return strcmp($a['k1'][0]['name'], $b['k1'][0]['name']);
}
然后,假设你的多维数组命名为$array
,将多维数组$array['result']
替换为新排序的数组:
$array['result'] = usort($array['result'], 'compareByName');
usort
和 strcmp
的文档应该是不言自明的,以便理解上面的代码是如何工作的。
$result = uasort($result, function($a, $b) {
return strcmp($a['kl'][0]['name'], $b['kl'][0]['name']);
});
我正在寻找对 php.I 中的多维数组进行排序的最有效方法,想按 [result][index][kl][0]
中的值 name
对数组进行排序。最快的方法是什么?我的数组有 100 个元素。
我的数组如下所示:
Array
(
[jsonrpc] => 2.0
[id] => req-002
[result] => Array
(
[0] => Array
(
[type] => subst
[lsid] => 11
[date] => 20150209
[startTime] => 955
[endTime] => 1040
[kl] => Array
(
[0] => Array
(
[id] => 29
[name] => S12UB
)
)
)
[1] => Array
(
[type] => subst
[lsid] => 11
[date] => 20150209
[startTime] => 1045
[endTime] => 1130
[kl] => Array
(
[0] => Array
(
[id] => 29
[name] => S12UB
)
)
)
谢谢。
使用用户定义的排序函数,例如usort
along with strcmp
:
function compareByName($a, $b) {
// the strcmp returns a numeric value above or below 0 depending on the comparison
return strcmp($a['k1'][0]['name'], $b['k1'][0]['name']);
}
然后,假设你的多维数组命名为$array
,将多维数组$array['result']
替换为新排序的数组:
$array['result'] = usort($array['result'], 'compareByName');
usort
和 strcmp
的文档应该是不言自明的,以便理解上面的代码是如何工作的。
$result = uasort($result, function($a, $b) {
return strcmp($a['kl'][0]['name'], $b['kl'][0]['name']);
});