为了账号安全,请及时绑定邮箱和手机立即绑定

PHP中,$arr = [ '0'=>'是', '1'=>'否' ]是索引数组吗?怎么看起来和关联数组结构类似!

PHP中,$arr = [ '0'=>'是', '1'=>'否' ]是索引数组吗?怎么看起来和关联数组结构类似!

PHP
撒科打诨 2019-03-13 01:40:25
/** * 判断数组是关联数组还是索引数组 * @param $array */ function AssociativeOrIndexArray($array){ if (!is_array($array)){ echo 'not array'; return; } $c = count($array); $in = array_intersect_key($array,range(0,$c-1)); if(count($in) == $c) { echo '索引数组'; }else if(empty($in)) { echo '关联数组'; }else{ echo '混合数组'; } } //索引数组 $arr = array(1,2,3,4); //关联数组 $arr = array('a'=>'a1','b'=>'b1','c'=>'c1'); //混合数组 $arr = array(1,'a'=>'a1',2,3,'cc'=>'4'); //索引数组 $arr = [ '0'=>'是', '1'=>'否' ]; AssociativeOrIndexArray($arr); 我测试的结果$arr = [ '0'=>'是', '1'=>'否' ]是索引数组,怎么看起来好像关联数组结构?!
查看完整描述

3 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

PHP是弱类型的语言,对类型不敏感,能忍则忍。

查看完整回答
反对 回复 2019-03-18
?
森栏

TA贡献1810条经验 获得超5个赞

PHP在数组中很大程度上体现了弱类型语言的风格,虽然这里的数字是字符串类型,但是作为这个数组中的key默认会变成int类型,所以数字类型的key的数组理论上是索引数组,你可以通过var_dump打印查看类型:查看结果

补充: 其实在通过索引读取数据的时候,不应该说这个数组就是索引数组,也可以说它是关联数组,PHP做了兼容,两种都可以,就比如你判断一个变量tt是否等于1$tt == 1$tt === 1是不一样的,它就属于前者,针对数字不判断他的类型,数字或者字符串类型都可以

查看完整回答
反对 回复 2019-03-18
?
炎炎设计

TA贡献1808条经验 获得超4个赞

是索引数组,你可以根据你key值来判断,key值为int则索引数组,key值为string则为关联数组。

查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 626 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信