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 对本站的支持

posted on 2009-05-12 16:36 实验室 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/labs/archive/2009/05/12/1455039.html

PHP 中检查是否关联数组(多维数组)的方法 (UPDATE!)相关推荐

  1. 【C 语言】二级指针内存模型 ( 指针数组 | 二维数组 | 自定义二级指针 | 将 一、二 模型数据拷贝到 三 模型中 并 排序 )

    文章目录 一.指针数组 和 二维数组 数据 拷贝到 自定义二级指针 中 1.函数形参 设计规则 2.三种内存模型 对应 函数形参 指针退化规则 二.完整代码示例 一.指针数组 和 二维数组 数据 拷贝 ...

  2. python指定数组大小_在python中创建指定大小的多维数组方式

    python中创建指定大小的二维数组,有点像C++中进行动态申请内存创建数组,不过相比较而言,python中更为简单一些. 创建n行m列的二维数组: n = 2 m = 3 matrix = [Non ...

  3. Vue 中利用 template标签遍历多维数组

    Vue 中利用 template标签遍历多维数组 1. 需求 2. 二维数组内容 3. 列表渲染指令 v-for 4. template 标签 5. 正确的做法 作者:高玉涵 时间:2022.7.20 ...

  4. C# 指定格式的字符串截成一维数组(二维数组)的操作类

    指定格式的字符串截成一维数组(二维数组)的操作类 做项目时经常会遇到将"1,3,a,b,d"截成一维数组或将"1,a;2,b;3,c;4,d"截成二维数组.虽然 ...

  5. php 二位数组随机,PHP多维数组 php打乱数组二维数组多维数组的简单实例

    php中的shuffle函数只能打乱一维数组,有什么办法快速便捷的打乱多维数组?手册上提供了 上面这个是针对二维数组的! 下面针对多维数组的乱序方法?尽可能的方便快速: 以下函数也是出自php手册,可 ...

  6. Java学习笔记2.6.2 数组 - 二维数组

    文章目录 零.本讲学习目标 一.引入多维数组的场景 二.二维数组的定义 (一)指定二维数组行数与列数 (二)指定二维数组行数,不指定列数 (三)直接使用嵌套大括号"{}"静态初始化 ...

  7. c/c++教程 - 1.7 数组 一维数组 二维数组

    九.数组 数组:一个里面存放了相同类型数据元素的集合. 特点:每个数组中的元素都是相同的数据类型:数组是由连续的内存位置组成的. 注意:数组的下标是从0开始索引. 参考视频:https://www.b ...

  8. php 数组重新打乱_php打乱数组二维数组多维数组的简单实例

    php中的shuffle函数只能打乱一维数组,有什么办法快速便捷的打乱多维数组?手册上提供了 function shuffle_assoc($list) { if (!is_array($list)) ...

  9. day06数组-一维数组二维数组

    数组:          数组到底是什么呢?有什么特点呢?通过上面的分析:我们可以得到如下两句话:                 1.数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. ...

  10. C语言数组——二维数组

    C语言目录 C/C++学习资源(百度云盘链接) 计算机二级资料(过级专用) C语言学习路线(从入门到实战) 编写C语言程序的7个步骤和编程机制 C语言基础-第一个C程序 C语言基础-简单程序分析 VS ...

最新文章

  1. python 变量名重新赋值 变量重新赋值 通过字典的方式
  2. 软工网络15个人阅读作业2——提问题
  3. java锁_Java锁
  4. 去除桌面图标的小箭头
  5. python中的map,feilter,和reduce函数
  6. c替代if else_答应我,别再if/else走天下了可以吗
  7. node.js之第一天
  8. gcc/g++ 编译、链接与常用命令工具(1)
  9. 冯乐乐之二 shader的数学
  10. 手机开热点但是电脑一直连接不上_电脑连接手机热点无法上网的三种解决方法...
  11. OJ每日一练——输出元音字母
  12. ROS编程入门(C++ 及 思路)
  13. LabVIEW通讯-TCP
  14. C语言实现扫雷小游戏(具体步骤+具体说明)
  15. vue-微信小程序-自定义计时器-答题倒计时
  16. soon or later,There is a decision to make.
  17. 信噪比SNR、符号信噪比Es/N0与比特信噪比Eb/N0的关系
  18. 万网绑定二级域名_万网虚拟主机绑定多个子域名的操作方法
  19. 开一个羽毛球馆大概需要多少钱?大约15万左右可以搞定!
  20. c语言怎么判断数组是否为空,PHP 判断数组是否为空的几种方法

热门文章

  1. win7下安装VC6LineNumberAddin方法[VC6行号插件]
  2. java redis 哨兵_突破Java面试(23-7) - Redis的哨兵架构
  3. Linux系统编程 --- 系统调用
  4. 使用@Validated分组遇到的坑及解决方案
  5. readhat7mysql_Redhat7.3安装MySQL8.0.22的详细教程(二进制安装)
  6. 网站安全之为Web项目添加验证码功能(一)
  7. SpringBoot + Eureka启动失败
  8. [渝粤教育] 郑州财税金融职业学院 玩转e时代 参考 资料
  9. 【渝粤教育】国家开放大学2018年春季 8038-22T实用管理基础 参考试题
  10. 【渝粤教育】广东开放大学 标准的研制与编制 形成性考核 (35)