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']];
}