- 数组定义
- 数组增、删、改
- 数组查询
- 数组排序
- 数组合并、分割
- 数组比较、去重复
- 数组长度
- 数组遍历
- 数组转换
- 其他操作
- 二维数组
- 三维数组
- 数组应用
数组定义
- array()
数组是一个能在单个变量中存储多个值的特殊变量。
在 PHP 中,有三种类型的数组:
- 数值数组 - 带有数字 ID 键的数组
//自动分配 ID 键(ID 键总是从 0 开始):
$cars=array("Volvo","BMW","Toyota")
/// 人工分配 ID 键:
$cars[0]="Volvo";
$cars[1]="BMW";
$cars[2]="Toyota";
遍历数值数组可用【for循环】
<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);
for($x=0;$x<$arrlength;$x++)
{
echo $cars[$x];
echo "<br>";
}
?>
- 关联数组 - 带有指定的键的数组,每个键关联一个值
关联数组是使用您分配给数组的指定的键的数组。
//这里有两种创建关联数组的方法:
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
// 或者直接赋值。
$age['Peter']="35";
$age['Ben']="37";
$age['Joe']="43";
遍历关联数组可用【foreach循环】
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
- 多维数组 - 包含一个或多个数组的数组
一个数组中的值可以是另一个数组,另一个数组的值也可以是一个数组。依照这种方式,我们可以创建二维或者三维数组:
<?php
// 二维数组:
$cars = array
(
array("Volvo",100,96),
array("BMW",60,59),
array("Toyota",110,100)
);
数组增、删、改、查
- 增加元素
$arr= array();
array_push($arr,1,2,3);
或者
$arr=array();
$arr[]=1;
$arr[]=2;
$arr[]=3;
在头部增加元素
array_unshit($arr,'新元素');
- 修改元素
$arr[3]='新元素';
$arr['key']='新元素';
- 删除元素
做法一:unset()函数删除某个元素,原有索引值不变,索引值不连续。但是再使用array_values()函数对索引重新排序,就能达到要求了
// unset()函数删除某个元素,原有索引值不变,索引值不连续。
$all_array = array(0 => "Info", 1 => "jianshu", 2 => "CoderZB");
unset($all_array[1]);
dump($all_array);
// array_values()索引重新排序,这样索引就是连续的了。
$all_array = array_values($all_array);
dump($all_array);
打印结果:
array(2) {
[0] => string(4) "Info"
[2] => string(7) "CoderZB"
}
array(2) {
[0] => string(4) "Info"
[1] => string(7) "CoderZB"
}
做法二:array_splice()函数删除某个元素,索引值连续。
$all_array = array(0 => "Info", 1 => "jianshu", 2 => "CoderZB");
array_splice($all_array, 2, 1);// 删除索引为2,长度为1的元素。
dump($all_array);
- 删除多个元素
array_diff(arr2)函数,返回两个数组不同部分
// array_diff()函数删除多个元素,原有索引值不变,索引值不连续。
$all_array = array(0 => "Info", 1 => "jianshu", 2 => "CoderZB",3 => "enjoy",4 => "reading");
$all_array = array_diff($all_array, ["Info", "enjoy"]);
dump($all_array);
// array_values()索引重新排序,这样索引就是连续的了。
$all_array = array_values($all_array);
dump($all_array);
- 清空数组
unset($array)
数组查询
- in_array(value,array,type) 函数
该函数的作用是在数组array中搜索指定的value值,type是可选参数,如果设置该参数为 true ,则检查搜索的数据与数组的值的类型是否相同,即恒等于。
$people = array("Peter", "Joe", "Glenn", "Cleveland");
if(in_array("Glenn",$people)){
echo "Match found";
}else{
echo "Match not found";
}
- array_key_exists(key,array)
该函数是判断某个数组array中是否存在指定的 key,如果该 key 存在,则返回 true,否则返回 false。
$a=array("a"=>"Dog","b"=>"Cat");
if(array_key_exists("a",$a)){
echo "Key exists!";
}else{
echo "Key does not exist!";
}
- array_search(value,array,strict)
array_search() 函数与 in_array() 一样,在数组中查找一个键值。如果找到了该值,则返回匹配该元素所对应的键名。如果没找到,则返回 false。注意在 PHP 4.2.0 之前,函数在失败时返回 null 而不是 false。同样如果第三个参数 strict 被指定为 true,则只有在数据类型和值都一致时才返回相应元素的键名。
$a=array("a"=>"Dog","b"=>"Cat","c"=>5,"d"=>"5");
echo array_search("Dog",$a);
echo array_search("5",$a);
数组排序
数组合并、分割
- 合并
array_combine() 通过合并两个数组(一个为键名数组,一个为键值数组)来创建一个新数组。
array_combine(keys,values);
keys数组 必需。规定数组的键名。
values数组必需。规定数组的键值。
返回值: 返回合并后的数组。如果两个数组的元素个数不相同,则返回 FALSE。
$fname=array("Peter","Ben","Joe");
$age=array("35","37","43");
$c=array_combine($fname,$age);
Array ( [Peter] => 35 [Ben] => 37 [Joe] => 43 )
- 分割
array_chunk(array,size,preserve_keys) 函数把一个数组分割为新的数组块。
返回一个多维的数值数组,从 0 开始,每个维度都包含 size 元素。
array 必需。规定要使用的数组。
size 必需。一个整数,规定每个新数组块包含多少个元素。
preserve_key 可选。可能的值:
true - 保留原始数组中的键名。
false - 默认。每个新数组块使用从零开始的索引。
数组比较、去重复
- array_diff() 函数用于比较两个(或更多个)数组的值,并返回差集。
该函数比较两个(或更多个)数组的值(key=>value 中的 value),并返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的值。
array_diff(array1,array2,array3...);
参数 描述
array1 必需。与其他数组进行比较的第一个数组。
array2 必需。与第一个数组进行比较的数组。
array3,... 可选。与第一个数组进行比较的其他数组。
返回一个差集数组,该数组包括了所有在被比较的数组(array1)中,但是不在任何其他参数数组(array2 或 array3 等等)中的值。
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");
$result=array_diff($a1,$a2);
Array ( [d] => yellow )
- array_diff_assoc() 函数用于比较两个(或更多个)数组的键名和键值 ,并返回差集。
- array_diff_key() 函数用于比较两个(或更多个)数组的键名 ,并返回差集。
- array_dff_uassoc() 比较数组,返回两个数组的差集(比较键名和键值,使用用户自定义的键名比较函数)。
- array_diff_ukey() 比较数组,返回两个数组的差集(只比较键名,使用用户自定义的键名比较函数)。
数组统计
- count()统计数组长度
- array_count_values()函数用于统计数组中所有值出现的次数
array_count_values(array)
array 必需。规定需要统计数组中所有值出现次数的数组。
返回值: 返回一个关联数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数。
$a=array("A","Cat","Dog","A","Dog");
Array ( [A] => 2 [Cat] => 1 [Dog] => 2 )
数组遍历
数组转换
其他操作
- array_change_key_case(array,case);
函数将数组的所有的键都转换为大写字母或小写字母。
array 必需。规定要使用的数组。
case 可选。可能的值:
CASE_LOWER - 默认值。将数组的键转换为小写字母。
CASE_UPPER - 将数组的键转换为大写字母。
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
print_r(array_change_key_case($age,CASE_UPPER));
结果:
Array
(
[PETER] => 35
[BEN] => 37
[JOE] => 43
)
- array_column() 返回输入数组中某个单一列的值的数组。
array_column(array,column_key,index_key);
array 必需。指定要使用的多维数组(记录集)。
column_key 必需。需要返回值的列。可以是索引数组的列的整数索引,或者是关联数组的列的字符串键值。该参数也可以是 NULL,此时将返回整个数组(配合index_key 参数来重置数组键的时候,非常管用)。
index_key 可选。可选数组中的列作为返回数组的索引/键的列。
返回值: 返回一个数组,数组的值为输入数组中某个单一列的值。
// 可能从数据库中返回数组
$a = array(
array(
'id' => 5698,
'first_name' => 'Peter',
'last_name' => 'Griffin',
),
array(
'id' => 4767,
'first_name' => 'Ben',
'last_name' => 'Smith',
),
array(
'id' => 3809,
'first_name' => 'Joe',
'last_name' => 'Doe',
)
);
$last_names = array_column($a, 'last_name');
print_r($last_names);
Array
(
[0] => Griffin
[1] => Smith
[2] => Doe
)
- array_fill()函数用给定的键值填充数组。 返回填充的数组。
array_fill(index,number,value);
ndex 必需。规定返回数组的起始索引。
number 必需。规定填充的元素的数量,其值必须大于 0。
value 必需。规定用于填充数组的键值。
- array_fill_keys ()函数用给定的指定键名的键值填充数组。返回填充的数组。
array_fill_keys(keys,value)
keys 必需。数组,其值将被用于填充数组的键名。
value 必需。规定用于填充数组的键值。
- array_filter ()函数用回调函数过滤数组中的元素。
array array_filter ( array callback [, int $flag = 0 ]] )