首先我有这样一个数组
Array
(
[id] => 4
[name] => 衬衫
[parent_id] => 0
[sort] => 99
[is_show] => 0
[seller_id] => 0
[part_img] =>
[create_time] => 2018-06-27 15:20:39
[update_time] => 2018-06-27 15:20:39
[status] => 0
[son] => Array
(
[5] => Array
(
[id] => 5
[name] => 版型
[parent_id] => 4
[sort] => 99
[is_show] => 0
[seller_id] => 0
[part_img] =>
[create_time] => 2018-06-27 15:20:39
[update_time] => 2018-06-27 15:20:39
[status] => 0
[son] => Array
(
[6] => Array
(
[id] => 6
[name] => 修身
[parent_id] => 5
[sort] => 99
[is_show] => 0
[seller_id] => 0
[part_img] =>
[create_time] => 2018-06-27 15:20:39
[update_time] => 2018-06-27 15:20:39
[status] => 0
)
[7] => Array
(
[id] => 7
[name] => 正常
[parent_id] => 5
[sort] => 99
[is_show] => 0
[seller_id] => 0
[part_img] =>
[create_time] => 2018-06-27 15:20:39
[update_time] => 2018-06-27 15:20:39
[status] => 0
)
[8] => Array
(
[id] => 8
[name] => 宽松
[parent_id] => 5
[sort] => 99
[is_show] => 0
[seller_id] => 0
[part_img] =>
[create_time] => 2018-06-27 15:20:39
[update_time] => 2018-06-27 15:20:39
[status] => 0
)
)
)
[9] => Array
(
[id] => 9
[name] => 领型宽
[parent_id] => 4
[sort] => 99
[is_show] => 0
[seller_id] => 0
[part_img] =>
[create_time] => 2018-06-27 15:20:39
[update_time] => 2018-06-27 15:20:39
[status] => 0
[son] => Array
(
[10] => Array
(
[id] => 10
[name] => 3CM
[parent_id] => 9
[sort] => 99
[is_show] => 0
[seller_id] => 0
[part_img] =>
[create_time] => 2018-06-27 15:20:39
[update_time] => 2018-06-27 15:20:39
[status] => 0
)
[11] => Array
(
[id] => 11
[name] => 4CM
[parent_id] => 9
[sort] => 99
[is_show] => 0
[seller_id] => 0
[part_img] =>
[create_time] => 2018-06-27 15:20:39
[update_time] => 2018-06-27 15:20:39
[status] => 0
)
[12] => Array
(
[id] => 12
[name] => 5CM
[parent_id] => 9
[sort] => 99
[is_show] => 0
[seller_id] => 0
[part_img] =>
[create_time] => 2018-06-27 15:20:39
[update_time] => 2018-06-27 15:20:39
[status] => 0
)
[13] => Array
(
[id] => 13
[name] => 5.5CM
[parent_id] => 9
[sort] => 99
[is_show] => 0
[seller_id] => 0
[part_img] =>
[create_time] => 2018-06-27 15:20:39
[update_time] => 2018-06-27 15:20:39
[status] => 0
)
[14] => Array
(
[id] => 14
[name] => 6CM
[parent_id] => 9
[sort] => 99
[is_show] => 0
[seller_id] => 0
[part_img] =>
[create_time] => 2018-06-27 15:20:39
[update_time] => 2018-06-27 15:20:39
[status] => 0
)
[15] => Array
(
[id] => 15
[name] => 6.5CM
[parent_id] => 9
[sort] => 99
[is_show] => 0
[seller_id] => 0
[part_img] =>
[create_time] => 2018-06-27 15:20:39
[update_time] => 2018-06-27 15:20:39
[status] => 0
)
[16] => Array
(
[id] => 16
[name] => 7CM
[parent_id] => 9
[sort] => 99
[is_show] => 0
[seller_id] => 0
[part_img] =>
[create_time] => 2018-06-27 15:20:39
[update_time] => 2018-06-27 15:20:39
[status] => 0
)
[17] => Array
(
[id] => 17
[name] => 8CM
[parent_id] => 9
[sort] => 99
[is_show] => 0
[seller_id] => 0
[part_img] =>
[create_time] => 2018-06-27 15:20:39
[update_time] => 2018-06-27 15:20:39
[status] => 0
)
[18] => Array
(
[id] => 18
[name] => 9CM
[parent_id] => 9
[sort] => 99
[is_show] => 0
[seller_id] => 0
[part_img] =>
[create_time] => 2018-06-27 15:20:39
[update_time] => 2018-06-27 15:20:39
[status] => 0
)
)
)
)
)
然后我去调用方法去统计这个数组
$this->getArrNum($arr);
/**
* 递归统计不规则数组的长度
* @param $data
* @param int $parent_id
* @param int $level
* @return array
*/
public function getArrNum($data)
{
static $arr = 0;
foreach ($data['son'] as $k => $v) {
$arr++;
if (array_key_exists('son', $v)) {
$this->getArrNum($v);
}
}
return $arr + 1;//因为之前的顶级数组没有统计好,所以需要加1
}
然后就会显示统计的结果17了
ps:(如果哪位大牛又更好的办法。求指教)