php的数组

php的数组分为2种——索引数组和关联数组,索引数组就是我们通常说的数组,底层的数据结构是数组;而关联数组则是我们说的map,底层的数据结构是hash

索引数组和关联数组的生成方式如何?举个例子:

索引数组:$arr = array('a','b');   $arr = array(0=> 'a', 1=>'b');

关联数组:$arr = array('a' => 'a', 'b' ='b');

一般来说,带有key的是关联数组(从0开始顺序的除外),不带的为索引数组

但是以下生成方式生成的数组要注意:

$c = array(1 => 'b', 0 =>'a'); // 关联数组,虽然只是0和1的位置换了,对我们上层取数据没影响,但是对底层的存储已经发生了影响

$d= array(1 => 'b', 'a'); //关联数组,虽然后面是顺序的,但是少了索引为0的位置

$e = array(0 => 'a', 1 =>'b', 3 => 'c'); //关联数组,前面虽然连续,但是少了索引为2的位置

值得注意的是,php默认生成的空数组为索引数组,要改变此机制,只需要将数组强制object,这对转换成json有很大帮助,即

$arr = array();// 索引数组

$arr = (object) array();// 关联数组

原文地址:https://www.cnblogs.com/billmiao/p/9872235.html