Php 按内部值对多数组进行排序
我有这个数组Php 按内部值对多数组进行排序,php,arrays,sorting,multidimensional-array,Php,Arrays,Sorting,Multidimensional Array,我有这个数组 [Computers] => Array ( [0] => Array ( [product_id] => 78 [category_name] => Computers [sort_order] => 1 ) [1] => Array ( [product_id] => 70
[Computers] => Array
(
[0] => Array
(
[product_id] => 78
[category_name] => Computers
[sort_order] => 1
)
[1] => Array
(
[product_id] => 70
[category_name] => Computers
[sort_order] => 1
)
)
[Scanners] => Array
(
[0] => Array
(
[product_id] => 65
[category_name] => Scanners
[sort_order] => 6
)
)
[Printers] => Array
(
[0] => Array
(
[product_id] => 58
[category_name] => Printers
[sort_order] => 3
)
)
[Screens] => Array
(
[0] => Array
(
[product_id] => 62
[category_name] => Screens
[sort_order] => 2
)
)
我似乎找不到一种基于键sort\u order
对数组进行排序的方法。我尝试了所有的例子,但没有运气。我需要按这个顺序排列数组
Computers
Screens
Printers
Scanners
试试这个
function aasort (&$array, $key) {
$sorter=array();
$ret=array();
reset($array);
foreach ($array as $ii => $va) {
foreach ($array[$ii] as $i => $val) {
$sorter[$ii]=$val[$key];
}
}
asort($sorter);
foreach ($sorter as $element => $value) {
$ret[$element]=$array[$element];
}
$array=$ret;
}
aasort($array,"sort_order");
您只是将sort参数设置在错误的级别。您想对最高级别进行排序,对吗?所以把排序参数也放在那里。以下数据结构更有意义:
[Computers] => Array
(
[sort_order] => 1,
[data] => array(
[0] => Array
(
[product_id] => 78,
[category_name] => Computers,
[sort_order] => 1,
)
)
)
如果将排序顺序嵌套到数据结构的最深处,将产生可怕的排序算法。这就足够了:
uasort($yourArray,
create_function('$a,$b','return $a[0]["sort_order"] > $b[0]["sort_order"];'));
如果你看我的问题,我清楚地说我已经尝试了所有这些解决方案,但没有运气,因为我的问题中有内部数组,所以你实际的问题是如何对你的数据采用另一个问题的答案?你能说明最后的数组应该是什么吗?@Tamer那是什么排序算法?它位于至少不如使用正确的数据结构和usort:(“属性”意味着,如果您从另一个答案复制解决方案,请指出您从何处复制它。