数组
2022年9月29日大约 4 分钟
数组
遍历数组的三种方式及各自区别
for循环
foreach循环
while、list()、each()组合循环
for 循环只能遍历索引数组
foreach 可以遍历索引和关联数组 会对数组reset()
while、list()、each()组合循环 也可以遍历索引和关联数组 不会对数组reset()
数组键值操作函数
array_values($arr); //获得数组的值
array_keys($arr); //获得数组的键名
array_flip($arr); //数组中的值与键名果有重的会覆盖)
array_search('PHP',$arr); //检索给定的值, true则是严格类型
array_reverse($arr); //将数组中的元素翻 (前后顺 )
in_array("apple", $arr); //在数组中检索 apple
array_key_exists("apple", $arr); // 检索给定的键名在数组
array_count_values($arr); // 统计数组中所有的次数
数组回调函数
array_filter(); //使用回调函数组中素,如果回 true则当前的元素包含到返中
array_walk(); //使用用户自定义函数对数组中的每个元素做回调处理
array_map() 将用户自定义函数作用到给定数组的每个值上,返回新的值。
array_reduce() 通过使用用户自定义函数,迭代地将数组简化为一个字符串,并返回。
数组的分段和填充
array_slice($arr, 0, 3); //返回数组中的选定部分。
array_splice($arr, 0, 3, array("black","maroon")); // 把数组中的指定元素去掉并用其它值取代。
array_chunk($arr, 3, TRUE); //将一个数组分 TRUE为保留组的键名(割多个数
数组栈,列队
array_push($arr, "apple", "pear"); //将一个或多个入数组末尾(返回入栈个数
array_pop($arr); // 将数组栈的最元出栈)
array_shift($arr); // 删除数组中的第一个元素,并返回被删除元素的值。
array_unshift($arr,"a",array(1,2)); //在数组的开一个或元素
比较数组
array_diff() 比较数组,返回两个数组的差集(只比较键值)。
array_diff_assoc() 比较数组,返回两个数组的差集(比较键名和键值)。
array_diff_key() 比较数组,返回两个数组的差集(只比较键名)。
array_diff_uassoc() 比较数组,返回两个数组的差集(比较键名和键值,使用用户自定义的键名比较函数)。
array_diff_ukey() 比较数组,返回两个数组的差集(只比较键名,使用用户自定义的键名比较函数)。
数组的排序
sort($arr); //由,名
rsort($arr); //由大到小键名
asort($arr); //由小到大键名
arsort($arr); //由大到小键名
ksort($arr); //按照键名序
krsort($arr); //按照键名序
数组的计算
array_sum($arr); //对数组内有元素求和运算元素的)
array_merge($arr1, $arr2); // 把一个或多个数组合并为一个数组。
array_diff($arr1, $arr2); //返回差集结果
array_diff_assoc($arr1, $arr2, $arr3); //返回差集结,键名比较
array_intersect($arr1, $arr2); //返回交集
array_intersect_assoc($arr1, $arr2); //返回交集组,键做比较
其他的数组函数
array_unique($arr); //移除数组中重复新的数组困留原始名
shuffle($arr); // 将数组的顺序打
注意点
- 数组 key 可以是 integer 或者 string。value 可以是任意类型
此外 key 会有如下的强制转换
:
-- 包含有合法整型值的字符串会被转换为整型。例如键名 "8" 实际会被储存为 8。但是 "08" 则不会强制转换,因为其不是一个合法的十进制数值。
-- 浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。
-- 布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。
-- Null 会被转换为空字符串,即键名 null 实际会被储存为 ""。
-- 数组和对象不能被用为键名。坚持这么做会导致警告:Illegal offset type。
<?php
$array = array(
1 => "a",
"1" => "b",
1.5 => "c",
true => "d",
);
var_dump($array);
#以上例程会输出:
// array(1) {
// [1]=>
// string(1) "d"
// }
- unset() 函数允许删除数组中的某个键。但要注意数组将不会重建索引。如果需要删除后重建索引,可以用 array_values() 函数。
<?php
$a = array(1 => 'one', 2 => 'two', 3 => 'three');
unset($a[2]);
/* will produce an array that would have been defined as
$a = array(1 => 'one', 3 => 'three');
and NOT
$a = array(1 => 'one', 2 =>'three');
*/
$b = array_values($a);
// Now $b is array(0 => 'one', 1 =>'three')
//