摘自 xoad 的检查是否关联数组(多维数组)的方法
数组在PHP中是最常用的一种数据类型,PHP 支持一维和多维数组,在操作数组元素时,对一维数组和多维数组的处理方法有许多不同之处,因此,许多时候,我们需要在操作前先检测一下数组类型,本文介绍的就是解决这一问题的方法。
<?php // 说明:摘自 xoad 的检查是否关联数组(多维数组)的方法 // 整理:http://www.CodeBit.cn function isAssocArray($var) { if ( ! is_array($var)) { return false; } $arrayKeys = array_keys($var); $sequentialKeys = range(0, sizeof($var)); if (function_exists('array_diff_assoc')) { if (array_diff_assoc($arrayKeys, $sequentialKeys)) { return true; } } else { if ((array_diff($arrayKeys, $sequentialKeys)) && (array_diff($sequentialKeys, $arrayKeys))) { return true; } } return false; } $array_1 = array( 'http://www.CodeBit.cn', 'http://YITU.org' ); $array_2 = array( 'CodeBit.cn'=>'http://www.CodeBit.cn', 'YITU.org'=>'http://YITU.org' ); echo (isAssocArray($array_1))?'是':'否'; // 否 echo "<br />"; echo (isAssocArray($array_2))?'是':'否'; // 是 ?>
网友 etng 发布的检查是否关联数组(多维数组)的方法
数组在PHP中是最常用的一种数据类型,PHP 支持一维和多维数组,在操作数组元素时,对一维数组和多维数组的处理方法有许多不同之处,因此,许多时候,我们需要在操作前先检测一下数组类型,本文介绍的就是解决这一问题的方法。
<?php // 说明:检查是否关联数组(多维数组)的方法 // 整理:http://www.CodeBit.cn //作者:etng //网址:http://www.etng.net/blog function isAA($input) { return is_array($input) && !(array_keys($input) === range(0, sizeof($input)-1)); } $array_1 = array( 'http://www.CodeBit.cn', 'http://YITU.org' ); $array_2 = array( 'CodeBit.cn'=>'http://www.CodeBit.cn', 'YITU.org'=>'http://YITU.org' ); echo isAA($array_1)?'是':'否'; // 否 echo "<br />"; echo isAA($array_2)?'是':'否'; // 是 ?>
实现思路:
(1) is_array($input) 检查是否是数组。
(2) array_keys($input) 获取数组的 key(如果是一维数组,其返回一个元素是0到数组大小的数组),然后通过 range(0, sizeof($input)-1) 生成一个0 到 数组大小的一维数组,比较两个数组是否一致(===),如果一致,说明是一维数组,否则(!),便是多维数组。
网友 etng 发布的这段代码结构清晰,代码简洁,非常感谢网友 etng 对本站的支持,