我有这样的一个数组:
<?php
array(
array(
'id' => 1,
'parent_id' => null
),
array(
'id' => 2,
'parent_id' => 1
),
array(
'id' => 3,
'parent_id' => null
),
array(
'id' => 4,
'parent_id' => 2
)
)
我需要每一个孩子出生时它的直接父后排序。 因此,ID 4项应ID 2之后到来。
谢谢。
工作液 :PHP有用户定义排序功能uasort我已经使用这个排序您的阵列。
<?php
$data = array(
array(
'id' => 1,
'parent_id' => null
),
array(
'id' => 2,
'parent_id' => 1
),
array(
'id' => 3,
'parent_id' => null
),
array(
'id' => 4,
'parent_id' => 2
)
);
function cmp($a, $b) {
if ($a['parent_id'] == $b['parent_id']) {
return 0;
}
return ($a['parent_id'] < $b['parent_id']) ? -1 : 1;
}
uasort($data, 'cmp');
echo '<pre>';
print_r($data);
echo '</pre>';
该工作液可与在array_multisort() 。
试着用:
$data = array(
array(
'id' => 1,
'parent_id' => null
),
array(
'id' => 2,
'parent_id' => 1
),
array(
'id' => 3,
'parent_id' => null
),
array(
'id' => 4,
'parent_id' => 2
)
);
$parent_ids = array();
foreach ($data as $item) {
$parent_ids[] = $item['parent_id'];
}
array_multisort($parent_ids, SORT_ASC, $data);
如果你想null
值在年底更换foreach
有:
foreach ($data as $item) {
if (is_null($item['parent_id'])) {
$item['parent_id'] = PHP_INT_SIZE;
}
$parent_ids[] = $item['parent_id'];
}
看到的结果是: print_r($data);
。