# 数组类型
在 PHP 中有两种数组:索引数组和关联数组。
- 索引(indexed)数组的索引值是整数,以 0 开始。当通过位置来标识东西时用索引数组。
- 关联(associative)数组以字符串做为索引值,关联数组更像操作表。索引值为列名,用于访问列的数据
<?php
$arr = [1, 2, 3]; // 索引数组
$users = ['name' => 'GaussZhou', 'age' => 9999, 'level' => "大乘后期"]; //关联数组
// 存储键值对的数字,关联(索引)数组
// 遍历数组
// foreach
foreach ($users as $key => $value) {
echo "key: " . $key . ", value:" . $value . "\r\n";
}
// list 类似JavaScript解构赋值
list($a, $b, $c) = $arr;
echo "$a $b $c";
// 1 2 3
echo "\r\n";
echo $users['name'];
echo "\r\n";
echo $users['level'];
echo "\r\n";
echo $users['age'];
echo "\r\n";
// GaussZhou
// 大乘后期
// 9999
list('name' => $name, 'age' => $age, 'level' => $level) = $users;
echo $name;
// GaussZhou
// 其他数组按索引取值,以及数组元素赋值,和JS相同
// PHP 的诡异操作 key current next prev
$arr = ['1', '2', '3'];
echo "key " . key($arr);
echo "\r\n";
echo current($arr);
echo "\r\n";
echo next($arr);
echo "\r\n";
echo "key " . key($arr);
echo "\r\n";
echo current($arr);
echo "\r\n";
echo prev($arr);
// key 0
// 1
// 2
// key 1
// 2
// 1
// 上述代码说明默认情况下声明一个数组的时候,数组指针指向第0个元素;
// 数组常用函数
// array_push() 入栈
// array_pop() 入栈
// array_shift() 移出
// array_unshift() 移入
// count() 长度 相当于 arr.length
// in_array($val,$arr) 检查数组中是否存在某个值 相当于arr.find()
// array_key_exists($key,$arr) 检查数组里是否有指定的键名或索引 相当于 object.has()
// array_keys($arr) 相当于 array.keys()
// array_filter($arr){}
$filterarr = [35, 44, 654];
$afterfilter = array_filter($filterarr, function ($ele) {
return $ele > 100;
});
echo "\r\n";
echo $afterfilter;
// array_map($arr){}
$maparr = [1, 2, 3];
array_map(function ($element) {
echo "\r\n";
echo $element;
}, $maparr);