关于PHP数组
很多编程语言都会提供各种数据结构,而PHP只提供了一种数据结构那就是数组。PHP数组的内核实现基于HashTable数据结构。
可以通过数字下标如 $array[0] ,也可以通过关键词 如 $array['hello'] 来访问。
创建数组
/**
* 通用写法
*/
$array = array(1, 2, 3, 'hello' => 1);
/**
* PHP5.4以上版本可用,短数组写法
*/
$array = [1, 2, 3, 'hello' => 1];
/**
* 无需声明,直接为数组赋值,PHP会自动创建一个数字索引数组
*/
$array[] = 1;
/**
* 无需声明,直接为数组赋值,PHP会自动创建一个关联索引数组
*/
$array['hello'] = 1;
数字索引数组
以连续数字为下标的数组,相当于其他编程语言的 List 结构。
$array = [];
$array[] = 1234;
$array[] = "hello";
$array[] = true;
var_dump($array[1]);
使用 [] 或 array_append 向数组尾部追加元素
使用数字下标访问元素,0 表示第1个元素,N 表示第 N+1 个元素(如 $array[1] 就表示第二个元素)
使用 array_pop 从数组尾部弹出元素,先进后出
使用 array_shift 从数组头部弹出元素,先进先出
关联索引数组
以任意数字、字符串作为下标的数组,相当于其他编程语言的 Map 结构。
$array["hello"] = "world";
$array[12345] = true;
var_dump($array["hello"]);
数组类型转换
关联索引数组,可以直接删除某个元素,unset($array[$key]) 即可
数字索引数组,不可以直接删除某个元素,强行删除会自动转换为关联索引数组,unset($array[1]) ,这个数组将变成关联索引数组,数组元素将变得不连续。可以使用 array_values 重新整理,转换为数字索引数组
var_dump(array_values($array));
这在 JSON 处理时尤为重要,关联索引数组会被转为 JS 的 {},而数字索引数组会转为 JS 的 [],如果对数字索引数组删除了某个元素,JS 中将得到 {} 类型,可以使用 array_values 解决此问题