返回数组维数(层数)
p例如 implode 一个多维数组会报错,当然我们可以用类似 array_search(true, array_map(is_array, $arr)) 这样的方法判断是否2维+(性能控请Hold住这只是个比方)。br / br / 下面,我们用 print_r 作为媒
例如 implode 一个多维数组会报错,当然我们可以用类似 array_search(true, array_map('is_array', $arr)) 这样的方法判断是否2维+(性能控请Hold住这只是个比方)。
下面,我们用 print_r 作为媒介。
/**
* 返回数组维数(层级)
* @author echo <chenj@nalashop.com>
* @param array $arr
* @return int
*/
function GetArrLv($arr) {
if (is_array($arr)) {
function AWRSetNull(&$val) {
$val = NULL;
}
#递归将所有值置NULL,目的1、消除虚构层如array("array(\n ()"),2、print_r 输出轻松点,
array_walk_recursive($arr, 'AWRSetNull');
$ma = array();
#从行首匹配[空白]至第一个左括号,要使用多行开关'm'
preg_match_all("'^\(|^\s+\('m", print_r($arr, true), $ma);
#回调转字符串长度
//$arr_size = array_map('strlen', current($ma));
#取出最大长度并减掉左括号占用的一位长度
//$max_size = max($arr_size) - 1;
#数组层间距以 8 个空格列,这里要加 1 个是因为 print_r 打印的第一层左括号在行首
//return $max_size / 8 + 1;
return (max(array_map('strlen', current($ma))) - 1) / 8 + 1;
} else {
return 0;
}
}
2. [代码]调it 跳至 [1] [2] [全屏预览]
$arr = array(array(1,2=>array(1,2,3)),2=>array(1=>array(array(array())),2),3); echo GetArrLv($arr);
- 上一篇:php获取文件类型和文件信息操作
- 下一篇:多维数组转一维
精彩图集
精彩文章






