PHP排序多维数组

PHP排序多维数组,php,arrays,sorting,Php,Arrays,Sorting,我想用一种特殊的方式对多维数组进行排序 我有这样一个数组: Array ( [551691] => Array ( [19129287] => Array ( [value] => cccccc [id] => 19129287 [col] => 1 ) [19129288] => Array ( [value] => bbbbb [id] => 19129288 [c

我想用一种特殊的方式对多维数组进行排序

我有这样一个数组:

Array (
 [551691] => Array (
   [19129287] => Array (
     [value] => cccccc
     [id] => 19129287
     [col] => 1
   )
   [19129288] => Array (
     [value] => bbbbb
     [id] => 19129288
     [col] => 2
   )
 )

 [550141] => Array (
   [19071703] => Array (
     [value] => aaaaa
     [id] => 19071703
     [col] => 1
   )
   [19071706] => Array (
     [value] => ccccc
     [id] => 19071706
     [col] => 2
   )
 )

 [550139] => Array (
   [19071675] => Array (
     [value] => bbbbb
     [id] => 19071675
     [col] => 1
   )
   [19071676] => Array (
     [value] => ddddd
     [id] => 19071676
     [col] => 2
   )
)
)
我想按[value]对特定[col]的数组进行排序

例如,[col]的值为1:

键为550141的一级数组应移动到第一个位置,因为[col]=>1的数组中的值为“aaaaa”

数组(
[550141]=>数组(//数组(
[值]=>aaaaa
[id]=>19071703
[col]=>1
)
[19071706]=>阵列(
[值]=>ccccc
[id]=>19071706
[col]=>2
)
)
[550139]=>数组(//数组(
[值]=>bbb
[id]=>19071675
[col]=>1
)
[19071676]=>阵列(
[值]=>DDD
[id]=>19071676
[col]=>2
)
)
[551691]=>阵列(
[19129287]=>阵列(
[值]=>中交
[id]=>19129287
[col]=>1
)
[19129288]=>阵列(
[值]=>bbb
[id]=>19129288
[col]=>2
)
)
)
如果有人有好主意……-)


谢谢

您可以使用

你可能需要像这样的东西

usort($array, function($a,$b) {
  return ($a['value']<$b['value'])?1:-1;
});
usort($array,function($a,$b){

return($a['value']最终我找到了一个解决方案。我不知道这是否是最好的方法,但它很有效:

$sortarray = array();

foreach ($datas as $datas_key => $s) {
    foreach ($s as $itemId => $item) {
        if ($item['col'] == 2) {
            $sortarray[] = array(
                'sid' => $datas_key,
                'value' => $item['value']
            );
        }
    }
}

usort($sortarray, function($a,$b) {
    return ($a['value']<$b['value'])?-1:1;
});

$datas_sorted = array();
foreach ($sortarray as $new_sort) {
    $datas_sorted[$new_sort['sid']] = $datas[$new_sort['sid']];
}
$sortarray=array();
foreach($datas as$datas\u key=>$s){
foreach($s作为$itemId=>$item){
如果($item['col']==2){
$sortarray[]=数组(
'sid'=>$datas\u键,
'value'=>$item['value']
);
}
}
}
usort($sortarray,function($a,$b){

return($a['value']感谢您的响应。我已经尝试过了,但它只对最后一级数组进行了排序。。这个响应只是让您指向正确方向的一个线索。完整的解决方案比这要复杂一些,但自己尝试查找它不是一个挑战吗?提示:它是foreach(){}、array_keys()和usort()的组合.
$sortarray = array();

foreach ($datas as $datas_key => $s) {
    foreach ($s as $itemId => $item) {
        if ($item['col'] == 2) {
            $sortarray[] = array(
                'sid' => $datas_key,
                'value' => $item['value']
            );
        }
    }
}

usort($sortarray, function($a,$b) {
    return ($a['value']<$b['value'])?-1:1;
});

$datas_sorted = array();
foreach ($sortarray as $new_sort) {
    $datas_sorted[$new_sort['sid']] = $datas[$new_sort['sid']];
}