php数组(数组的定义、使用、删除数组、数组操作符、数组排序、数组元素查找、数组的常用函数)

什么是数组

数组是一种数据类型,在PHP中广泛应用。

数组是一个可以存储一组或一系列数值的变量。

在PHP中,数组中的元素分为两个部分,分别为键(Key)和值(Value)。

“键”为元素的识别名称,也称为数组下标,“值”为元素的内容。 “键”和“值”之间存在一种对应关系,称为映射。

根据下标的数据类型,可以将数组分为索引数组和关联数组两种类型。

索引数组:

索引数组是指下标为整数的数组。

索引数组的下标从0开始,依次递增。

当需要使用位置来标识数组元素时,可以使用索引数组。

需要注意的是,索引数组的“键”可以自己指定,默认情况下,是从0开始的。

关联数组 :

关联数组是指下标为字符串的数组。 通常情况下,关联数组元素的键和值之间有一定的业务逻辑关系,因此,通常使用关联数组存储一系列具有逻辑关系的变量。

在PHP中定义一个数组非常简单,既不需要事先声明,也不需要指定数组的大小。

1、使用赋值方式定义数组

2、使用array()函数定义数组 

在定义数组时,通常有两种方式:一种是直接给数组中的元素赋值,另一种是使用array()函数定义数组。

数组的定义

使用赋值方式定义数组:

使用赋值方式定义数组是最简单的方式。 这种方式实际上就是创建一个数组变量,然后使用赋值运算符直接给变量赋值,其语法格式如下:

$arrayName[key] = value

$arrayName”是数组名。

“key”是数组的下标,其类型可以是整型或字符串。

“value”可以是任意类型的数据。

定义一个索引数组的示例代码如下:

$arr[0] = 123;       //整数
$arr[1] = "hello";  //字符串
$arr[2] = 45.6;      //浮点数
$arr[3] = true;      //布尔值
$arr[4] = null;      //null

代码中定义了一个索引数组变量$arr。 需要注意的是,如果没有指定“键”(即[]内的键名省略不写),则使用默认键,即“键”从0开始,依次递增。

使用赋值方式定义一个关联数组,示例代码如下:

$arr["id"] = 1;
$arr["name"] = "韩某";
$arr["address"] = "北京";
$arr["email"] = "[email protected]";

关联数组,数组元素的“键”都是字符串,并且“键”与“值”具有一一对应关系。

例:

<?php
echo "<hr>";
$stu=[
    "id"=>1254,
    "name"=>"刘德华",
    "mobile"=>"13976507648"
];
$stu["sex"]="男";
print_r($stu);
?>

结果图:

 使用array()函数定义数组

使用array()函数也可以定义数组,它接收数组的元素作为参数,多个元素之间使用英文逗号分隔,其语法格式如下:

$arrayName = array( key1 => value1, key2 => value2, ...)

如果省略了key部分,则定义的数组默认为索引数组。

使用array()函数定义一个数组,示例代码如下:

$arr = array( 123, "hello", 45.6, true );

在数组$arr中只定义了数组元素的值,省略了“键”的部分,则$arr默认为索引数组,并且“键”从0开始,依次递增。

使用array()函数定义一个关联数组,示例代码如下:

$arr = array(
                 "id"=> 1, 
                 "name"=> "韩某",
                 "address"=> "北京",
                 "email"=> "[email protected]"
           );   

数组的使用

在PHP开发中,经常会使用数组。

由于数组中的键和值是映射关系,并且键是数组元素的唯一标识,所以可以根据元素的键来获取该元素的值。

具体语法格式如下:

$数组名[键名]

除了可以使用方括号([])访问数组元素,还可以使用花括号({})。 例如,$arr[0]和$arr{0}的效果是一样的。

如果要查看整个数组的信息, PHP提供了print_r()和var_dump()函数, 专门用于输出数组中的所有元素。

其中,print_r()函数可以按照一定格式显示数组中所有元素的键和值。

var_dump()函数与print_r()函数的用法类似,但是var_dump()函数的功能更加强大,它可以在打印数组元素的同时打印元素中值的数据类型。

删除数组

在实际开发中,有时需要删除数组中的某些元素。

在PHP中提供了unset()函数用于删除数组中的元素。

unset()函数不仅可以删除指定下标的元素还可以删除整个数组。

例:

<?php
$a=[100,200,300,400,500];
unset($a[2]);
var_dump($a);
?>

结果图:

 array_splice():

<?php
$a=[100,200,300,400,500];
array_splice($a,2,1);
array_splice($a,3,1);
print_r($a);
?>

结果图:

array_diff():

<?php
$a=[100,200,300,400,500];
$b=array_diff($a,[100,400]);
print_r($b);
?>

 结果图:

array_diff_key():
 

<?php
$stu=[
   "id"=>1001,
   "name"=>"wangsir",
   "sex"=>"boy",
   "moblie"=>"17398746054"
];
$newstu=array_diff_key($stu,["moblie"=>""]);
print_r($newstu);
?>

 结果图:

数组操作符

整型数据可以通过一些运算符进行赋值运算、算术运算、比较运算等操作。

在PHP中,数组这种复合类型的数据也可以进行运算,数组的运算是通过数组操作符实现的。

常见的数组操作运算符如下表所示。

“+”为联合运算符,用于合并数组,如果出现下标相同的元素,则保留第一个数组内的元素。

数组的常见操作

数组在PHP程序中应用非常广泛。在使用数组时,经常需要对数组进行遍历、排序、查找等操作,因此灵活地使用数组对实际开发很重要。

数组遍历

在操作数组时,经常需要依次访问数组中的每个元素,这种操作称为数组的遍历。

在PHP中,通常使用foreach语句实现数组的遍历, 其语法格式有两种,具体如下:

以上两种语法格式都是通过foreach语句来实现对数组的遍历,不同的是,在语法格式一中,只是将当前元素的值赋给$value。而在语法格式二中,将当前元素的键名赋值给$key,值赋值给$value,这样可以同时获取当前元素的键名和值。

数组排序 

sort:对数组进行升序排序

<?php
$a=[66,64,90,88,76,100,94];
sort($a);
print_r($a);
?>

 

rsort:对数组进行降序排序

<?php
$a=[66,64,90,88,76,100,94];
rsort($a);
print_r($a);
?>

 

asort:对数组进行升序排序并保持索引关系

<?php
$a=["a"=>100,"b"=>50,"c"=>200,"d"=>190];
asort($a);
print_r($a);
?>

 

ksort:按照键名对数组进行升序排序

<?php
$a=["a"=>100,"b"=>50,"c"=>200,"d"=>190];
ksort($a);
print_r($a);
?>

 

arsort:对数组进行降序排序并保持索引关系

<?php
$a=["a"=>100,"b"=>50,"c"=>200,"d"=>190];
arsort($a);
print_r($a);
?>

 

krsort:按照键名对数组进行降序排序

<?php
$a=["a"=>100,"b"=>50,"c"=>200,"d"=>190];
krsort($a);
print_r($a);
?>

 

 数组元素查找

在数组中常用的查找元素的方法有顺序查找和二分法查找

array_search():
 

<?php
$score=[65,88,50,78,98,35];
echo array_search("98",$score);
echo "<br>数组的长度是:".count($score);
?>

结果图:

数组的常用函数

PHP中提供许多操作数组的函数,只需要调用这些函数就能够实现数组的查找和排序等功能。 

基本函数

在使用数组时,经常会对数组中的元素进行操作。为此PHP提供了一些基本函数,如count()、array_unique()等,通过这些函数可以完成一些常见的功能,

is_array()函数:

is_array()函数的作用是判断一个变量是否是数组,如果是数组,则返回true,否则返回false。

count()函数:

count()函数的作用是用于计算数组中元素的个数。

其声明方式如下:

int count(mixed $var [, int $mode ]);

在上述声明中,count()函数接收两个参数,其中$var参数是必需的,它表示传入的数组对象。

$mode参数是可选参数,默认值为0,如果将该参数设置为1,则count()函数会递归计算多维数组中每个元素的个数。

array_unique()函数:

array_unique()函数的作用是移除数组中的重复元素。

其声明方式如下:

array array_unique(array $array)

例:

<?php
$score=[65,88,50,88,65,50,88,98,35];
$x=array_unique($score);
print_r($x);
?>

结果图:

键值对的相关函数:

在PHP中,数组实质上是由键值对构成的一个集合,因此关于键和值的操作尤为重要。

array_keys():

array_keys()函数同样也是用于获取数组中元素对应的键名。不同的是,array_keys()函数可以返回所有匹配的键名。

其声明方式如下:

array array_keys(array $input[,mixed $search_value[,bool $strict]]);

排序函数

数组排序是通过循环遍历数组中的所有元素,然后通过每两个元素之间的比较从而完成的排序。

实际上,PHP提供了多个排序的函数,可以直接调用。例如:sort()函数、rsort()函数、ksort()函数等。

合并和拆分函数

在操作数组过程中,经常会遇到合并或拆分数组的情况。

为此,PHP提供了array_merge()函数和array_chunk()函数

array_merge()函数:

array_merge()函数的作用是合并一个或多个数组。

其声明方式如下:

array array_merge( array $array1 [, array $... ] );

array_merge()将一个或多个数组的单元合并起来,一个数组中的值附加在另一个数组的后面,返回一个新的数组。

如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。

如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到数组的后面。

如果数组是数字索引的,则键名会以连续方式重新编排索引。

array_chunk()函数:

函数array_chunk()的作用是将一个数组分割成多个数组。

array array_chunk( array $input , int $size [, bool $preserve_keys ] );

其他函数

array_rand()函数:

array_rand()函数的作用是从数组中随机取出一个或多个元素。

其声明方式如下:

mixed array_rand( array $input [, int $num_req ] );

例:

<?php
$x=["张飞","关羽","刘备","子龙","阿亮","小乔"];
$y=array_rand($x,3);
foreach($y as $i){
	echo $x[$i]."<br>";
}
?>

结果图:

array_reverse()函数:

array_reverse()函数的作用是返回一个元素顺序相反的数组。

其声明方式如下:

array array_reverse( array $array [, bool $preserve_keys ] );

array_reverse()接收数组$array作为输入并返回一个元素为相反顺序的新数组,如果$preserve_keys为 true,则保留原来的键名。

猜你喜欢

转载自blog.csdn.net/m0_69034993/article/details/127225879