我试图在PHP中按以下方式对数组进行排序:
array
0 => id:1203
parent_id: 456
1 => id:456
parent_id:1723
2 => id:1723
parent_id:0
到此:
array
0 => id:1723
parent_id:0
1 => id:456
parent_id:1723
2 => id:1203
parent_id:456
我以前从未在PHP中对数组进行过排序。你会怎么做?
由于
答案 0 :(得分:1)
这样做你想要的吗?
$arr = array(
array('id' => 1203, 'parent_id' => 456),
array('id' => 456, 'parent_id' => 1723),
array('id' => 1723, 'parent_id' => 0)
);
function compare($a, $b) {
if ($a['parent_id'] == 0) return -1;
if ($b['parent_id'] == 0) return 1;
if ($a['id'] == $b['parent_id']) return -1;
if ($b['id'] == $a['parent_id']) return 1;
return 0;
}
usort($arr, 'compare');
print_r($arr);
<强>输出:强>
Array
(
[0] => Array
(
[id] => 1723
[parent_id] => 0
)
[1] => Array
(
[id] => 456
[parent_id] => 1723
)
[2] => Array
(
[id] => 1203
[parent_id] => 456
)
)
答案 1 :(得分:0)
我没有看到你想要用来排序的标准。无论如何,您可以使用uasort function,在其中传递自定义函数作为参数,因此在该函数中,您可以定义要为数组排序的任何条件。该函数将接收2个参数(要比较的2个变量),您可以比较parent_id(或您要比较的任何内容)。要了解自定义函数应返回的内容,请查看this out。
通过使用uasort而不是usort,您可以保留数组索引(如您在示例中所述)。