PHP 中检查是否关联数组,多维数组的方法 (UPDATE!

数组在PHP中是最常用的一种数据类型,PHP 支持一维和多维数组,在操作数组元素时,对一维数组和多维数组的处理方法有许多不同之处,因此,许多时候,我们需要在操作前先检测一下数组类型,本文介绍的就是解决这一问题的方法。

PHP:

1 <?php

2 // 说明:摘自 xoad 的检查是否关联数组(多维数组)的方法

3 // 整理:http://www.CodeBit.cn

4

5 function isAssocArray($var)

6 {

7 if ( ! is_array($var))

8 {

9 return false;

10 }

11 $arrayKeys = array_keys($var);

12 $sequentialKeys = range(0, sizeof($var));

13 if (function_exists('array_diff_assoc'))

14 {

15 if (array_diff_assoc($arrayKeys, $sequentialKeys))

16 {

17 return true;

18 }

19 }

20 else

21 {

22 if ((array_diff($arrayKeys, $sequentialKeys)) &&

23 (array_diff($sequentialKeys, $arrayKeys)))

24 {

25 return true;

26 }

27 }

28 return false;

29 }

30 $array_1 = array(

31 'http://www.CodeBit.cn',

32 'http://www.yitu.org'

33 );

34 $array_2 = array(

35 'CodeBit.cn'=>'http://www.CodeBit.cn',

36 'YITU.org'=>'http://www.yitu.org'

37 );

38

39 echo (isAssocArray($array_1))?'是':'否'; // 否

40 echo "<br />";

41 echo (isAssocArray($array_2))?'是':'否'; // 是

42 ?>

数组在PHP中是最常用的一种数据类型,PHP 支持一维和多维数组,在操作数组元素时,对一维数组和多维数组的处理方法有许多不同之处,因此,许多时候,我们需要在操作前先检测一下数组类型,本文介绍的就是解决这一问题的方法。

PHP:

1 <?php

2

3 // 说明:检查是否关联数组(多维数组)的方法

4 // 整理:http://www.CodeBit.cn

5

6 //作者:etng

7 //网址:http://www.etng.net/blog

8

9 function isAA($input)

10 {

11 return is_array($input)

12 && !(array_keys($input) === range(0, sizeof($input)-1));

13 }

14

15 $array_1 = array(

16 'http://www.CodeBit.cn',

17 'http://www.yitu.org'

18 );

19

20 $array_2 = array(

21 'CodeBit.cn'=>'http://www.CodeBit.cn',

22 'YITU.org'=>'http://www.yitu.org'

23 );

24

25 echo isAA($array_1)?'是':'否'; // 否

26 echo "<br />";

27 echo isAA($array_2)?'是':'否'; // 是

28

29 ?>

实现思路:

(1) is_array($input) 检查是否是数组。

(2) array_keys($input) 获取数组的 key(如果是一维数组,其返回一个元素是0到数组大小的数组),然后通过 range(0, sizeof($input)-1) 生成一个0 到 数组大小的一维数组,比较两个数组是否一致(===),如果一致,说明是一维数组,否则(!),便是多维数组。

网友 etng 发布的这段代码结构清晰,代码简洁,非常感谢网友 etng 对本站的支持