PHP数组使用

2020-06-30  本文已影响0人  咖啡di味道

数组定义

数组是一个能在单个变量中存储多个值的特殊变量。
在 PHP 中,有三种类型的数组:

//自动分配 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()函数删除某个元素,原有索引值不变,索引值不连续。
$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()函数删除多个元素,原有索引值不变,索引值不连续。
$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)

数组查询

$people = array("Peter", "Joe", "Glenn", "Cleveland");
if(in_array("Glenn",$people)){
  echo "Match found";
}else{
  echo "Match not found";
}
$a=array("a"=>"Dog","b"=>"Cat");
if(array_key_exists("a",$a)){
 echo "Key exists!";
}else{
 echo "Key does not exist!";
}
$a=array("a"=>"Dog","b"=>"Cat","c"=>5,"d"=>"5");
echo array_search("Dog",$a);
echo array_search("5",$a);

数组排序

数组合并、分割

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 必需。规定要使用的数组。
size 必需。一个整数,规定每个新数组块包含多少个元素。
preserve_key 可选。可能的值:
true - 保留原始数组中的键名。
false - 默认。每个新数组块使用从零开始的索引。

数组比较、去重复

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_count_values(array)
array 必需。规定需要统计数组中所有值出现次数的数组。
返回值: 返回一个关联数组,其元素的键名是原数组的值,键值是该值在原数组中出现的次数。

$a=array("A","Cat","Dog","A","Dog");

Array ( [A] => 2 [Cat] => 1 [Dog] => 2 )

数组遍历

数组转换

其他操作

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_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(index,number,value);
ndex 必需。规定返回数组的起始索引。
number 必需。规定填充的元素的数量,其值必须大于 0。
value 必需。规定用于填充数组的键值。

array_fill_keys(keys,value)
keys 必需。数组,其值将被用于填充数组的键名。
value 必需。规定用于填充数组的键值。

二维数组

三维数组

数组应用

上一篇 下一篇

猜你喜欢

热点阅读