php+数组嵌套排序,对嵌套的多维PHP数组的每个级别进行排序

我有一个多维

PHP数组,我用它来生成分层UL树.但是,在显示UL树之前,我想通过’name’属性按字母顺序对数组中的每个级别进行排序.我想象一个递归检查每个级别的函数,按字母顺序组织它,然后移动到下一级别来排序该级别.但我不知道该怎么做.任何帮助,将不胜感激!

我的阵列:

Array (

[0] => Array (

[id] => 39348

[parent] => 0

[name] => Test

[children] => Array (

[0] => Array (

[id] => 41911

[parent] => 39348

[name] => Test2

[children] => Array (

[0] => Array (

[id] => 40929

[parent] => 41911

[name] => Test3

[children] => Array (

[0] => Array (

[id] => 40779

[parent] => 40929

[name] => C

)

[1] => Array (

[id] => 40780

[parent] => 40929

[name] => A

)

)

)

)

)

我的尝试,即移动订单,但它仍然不是按字母顺序排列的.注意,CodeIgniter需要数组($this,’sortByName’),我正在使用它:

function recursive_sort($array) {

usort($array, array($this,'sortByName'));

foreach($array as $key => $value) {

if(isset($value['children']) && !empty($value['children']) && is_array($value['children'])) {

$array[$key]['children'] = $this->recursive_sort($value['children']);

}

}

return $array;

}

function sortByName($a, $b){

return $a->name - $b->name;

}

更新:解决方案

function recursive_sort($array,$child='children') {

usort($array,function($a,$b){

return strcasecmp($a['name'], $b['name']);

});

foreach($array as $key => $value) {

if(isset($value[$child]) && !empty($value[$child]) && is_array($value[$child])) {

$array[$key][$child] = $this->recursive_sort($value[$child],$child);

}

}

return $array;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值