PHP【数组】

PHP【数组】


PHP数组

数组是特殊的变量,它可以同时保存一个以上的值。

  • 数组是一种可以存储多个值的有序集合。
  • PHP数组可以包含不同类型的值,如整数、字符串、对象等。
  • 数组中的每个值都有一个唯一的键(索引),可以用于访问和操作数组中的元素。

创建与访问

  • 使用array()函数或简化的[]语法可以创建一个数组。
  • 数组的索引可以是整数或字符串,可以手动指定索引,也可以自动生成。
  • 通过索引可以访问数组中的元素,也可以使用foreach循环遍历数组。

一、PHP数组的分类?

按照下标的不同,PHP数组分为关联数组和索引数组;
索引数组:下标从0开始,依次增长
关联数组:下标为字符串格式,每个下标字符串与数组的值一一关联对应(类似对象的键值对)

<?php
$arr1 = array(1,23,434,35,5,5); //索引数组
 var_dump($arr1);
$arr2 = array("one"=>1,"two"=>2,"three"=>3);//关联数组
 var_dump($arr2);
// 访问数组元素
echo $arr1[0];  // 输出: 1
echo $arr1["one"];  // 输出: 1

关联数组与索引数组详解

  • 数组中,可以同时存在索引数组与关联数组。 array(1,2,3,“one”=>4);

  • 数组中,所有的索引数组,如果不加指定,会去掉关联项,默认增长(即,关联数组不占索引位);
    array(1,2,“one”=>3,4,5);//1,2,4,5的索引—>0/1/2/3

  • 如果手动指定索引数组下标,则后续自增长下标,会按照之前下标最大值,依次增长。
    array(1,2,7=>3,4);—>1,2,3,4的下标—>0/1/7/8

  • 如果,关联数组的key,是纯十进制整数字符串,则会将此数字转为索引数组的索引值;
    array(1,2,“one”=>3,“9”=>4,“010”=>5);//1,2,4的索引—>0/1/9

  • 如果,手动指定关联数组的key,索引数组的下标,如果与前面已有的key或下标重复,则后制定的值会覆盖之前的值;
    array(1,“one”=>2,0=>5,“one”=>6);—>打印数组,0=>5,“one”=>6

二、数组的声明方式

1、直接赋值声明

$arr[] = 1;
var_dump($arr);  // 0 =>int 1

在这里插入图片描述
2、[]字面量声明

$arr = [1,2,3,4,"one"=>5,6];
var_dump($arr);

在这里插入图片描述
3、Array()声明

$arr = array(1,2,3,4,5);
var_dump($arr);

在这里插入图片描述

实例:

<?php 	
	// 1. array()函数创建一维数组
    $array1=array(1,2,3,4);                           // 定义不带键名的数组
    $array2=array("color1"=>"blue","color2"=>"red");  // 定义带键名的数组
    $array3=array(1=>2,2=>4,5=>6,8,10);               // 定义省略某些键名的数组

    echo $array1[0];							   // 输出数组元素
    echo $array1["color2"];
    echo $array1[5];

    print_r($array1);							   // 打印数组
    print_r($array2);
    print_r($array3);
    /*
		自定义键名可以是字符串或数字。如果省略了键名,则会自动产生从0开始的整数作为键名。如果只对某个给出的值没有指定键名,则取该值前面最大的整数键名加1后的值。
		注意:
			如果定义了两个完全一样的键名,则后面一个会覆盖前面一个。

    */



	// 2. array()函数创建多维数组
	
    $array4=array(
		"color"=>array("红色","蓝色","白色"),
		"number"=>array(1,2,3,4,5,6)
	);                        				
    echo $array4["color"][2];              // 输出数组元素,输出结果为"白色"
    print_r($array4);                      // 打印二维数组
 ?>

在这里插入图片描述

三、数组遍历输出

1、使用for循环访问数组
count($arr);用于统计数组元素的个数,for循环只能用于遍历,纯索引数组

<?php 
	$arr=[1,2,3,4,5,'x'=>6,7,8,9,10];
	for ($i=0; $i<count($arr); $i++) { 
		echo $arr[$i]."<br>";
	}
 ?> //关联数组不占索引

在这里插入图片描述

2、使用foreach循环访问数组

 <?php 
    $arr=[1,2,3,4,5,'x'=>6,7,8,9,10];
 	foreach ($arr as $key => $value) {
 		echo $key."------".$value."<br>";
 	}
  ?>

在这里插入图片描述

// 遍历索引数组
$fruits = array("apple", "banana", "orange");
foreach ($fruits as $fruit) {
    echo $fruit . "<br>";
}
// 遍历关联数组
$person = array("name" => "John", "age" => 30, "city" => "New York");
foreach ($person as $key => $value) {
    echo $key . ": " . $value . "<br>";
}

在这里插入图片描述

四、数组排序及相关操作

1、array_values()

返回数组的所有值,但不包括数组的键值。返回的是以数字为键值的数组,从0开始。

<?php
$arr = array("name1" => "aa", "name2" => "bb", "name3" => "cc");    
print_r(array_values($arr));   //输出为   Array ( [0]=>aa  [1]=>bb  [2]=>cc )
?>

在这里插入图片描述

2、array_keys()

返回数组的键名,以数字为键值的数组形式,从0开始。

<?php
print_r(array_keys($arr));    //输出为   Array ( [0]=>name1  [1]=>name2  [2]=>name3 )
?>

在这里插入图片描述

3、array_reverse()

将数组中的元素倒叙,返回值为倒叙之后的数组。

<?php
print_r(array_reverse($arr));   //会输出   Array ( [name3]=>cc  [name2]=>bb  [name1]=>aa )
?>
 $a=array("red","green","blue","yellow","brown");
$random_keys=array_rand($a,3);
echo $a[$random_keys[0]]; // red
echo $a[$random_keys[1]]; // blue
echo $a[$random_keys[2]]; // brown

## 4、array_unique()
删除数组中重复的值。

$a=array("a"=>"red","b"=>"green","c"=>"red");
print_r(array_unique($a)); // Array ( [a] => red [b] => green )

在这里插入图片描述
5、sort()
对数值数组进行升序排序

$num=array(33,24,1,266);
sort($num);

$clength=count($num);
for($x=0;$x<$clength;$x++)
{
    echo $num[$x];
    echo "<br>";
}
// 输出:
1
24
33
266

在这里插入图片描述

6、rsort()
对数值数组进行降序排序。

$num=array(33,24,1,266);
rsort($num);

$clength=count($num);
for($x=0;$x<$clength;$x++)
{
    echo $num[$x];
    echo "<br>";
}
// 输出:
266
33
24
1

在这里插入图片描述
7、krsort()
对关联数组按照键名降序排序。

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
krsort($age);
foreach($age as $x => $x_value) {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}
// 输出:
Key=Peter, Value=35
Key=Joe, Value=43
Key=Ben, Value=37

8、asort() 对关联数组按照键值进行升序排序。

$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
arsort($age);
foreach($age as $x=>$x_value)  {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
}
// 输出:
Key=Joe, Value=43
Key=Ben, Value=37
Key=Peter, Value=35

五、预定义数组
自动全局变量————-超全局数组
1、包含了来自web服务器,客户端,运行环境和用户输入的数据相关的一些数组

2、这些数组比较特别

3、全局范围内自动生效,都可以直接使用这些数组

4、用户不能自定义这些数组,但这些数组的操作方式又和我们自己操作的方式一样

1、SERVER
说明:包含Web服务器创建的信息,他提供了服务器和客户配置及当前请求环境的有关信息.
例如:客户端的IP地址等。根据服务器不同,SERVER中的变量值和变量个数会有差别。你可以通过下列代码来获取所有变量列表及值:

foreach ($_SERVER as $var => $value) {
  echo "$var => $value<br />";
}

要获取其中的值可以用如下形式:

$_SERVER['REMOTE_ADDR']  // 客户IP地址

2、 G E T 说明:通过 _GET 说明:通过 GET说明:通过_GET获取GET方法传递的参数值。
例如:$_GET[‘cat’]

3、 P O S T 说明:通过 _POST 说明:通过 POST说明:通过_POST获取POST方法传递的参数值。
例如:$_POST[‘email’]

4、 C O O K I E 说明:通过 _COOKIE 说明:通过 COOKIE说明:通过_COOKIE获取用户Cookie中的信息。
例如:$_COOKIE[‘example’]

5、 F I L E 说明: _FILE 说明: FILE说明:_FILE包含了通过POST方法向服务器上传的数据的有关信息。它是个二维数组,第一维表示表单的文件上传元素名称,第二维表示5个预设值之一,如下:

$_FILE[‘upload-name’][‘name’]——从客户端向服务器上传文件的文名。
$_FILE[‘upload-name’][‘type’]——上传文件的MIMIE类型。这个变量是否被赋值取决于浏览器的功能。
$_FILE[‘upload-name’][‘size’]——上传文件的大小,以字节为单位。
$_FILE[‘upload-name’][‘tmp_name’]——上传之后,将此文件移动到最终位置之前赋予的临时名。
$_FILE[‘upload-name’][‘error’]——上传状态码,如下:
.UPLOAD_ERR_OK 文件上传成功
.UPLOAD_ERR_INI_SIZE 文件大小超出了upload_max_filesize所设定的最大值
.UPLOAD_ERR_FORM_SIZE 文件大小超出了MAX_FILE_SIZE隐藏表单域参数指定的最大值
.UPLOAD_ERR_PARTIAL 文件只上传了一部分
.UPLOAD_ERR_NO_FILE 上传表单中没有指定文件

6、ENV
说明:该变量提供PHP解析器所在服务器环境的有关信息。
例如:$_ENV[‘HOSTNAME’] 服务器主机名
$_ENV[‘SHELL’] 系统shell

7、$_SESSION
说明:包含与所有会话变量有关的信息。

8、$_REQUEST
说明:记录通过GET、POST、COOKIE等方法传递给脚本的变量,变量的顺序依赖于variables_order配置项指定的顺序。

9、$_GLOBALS
说明:包括全局作用域内的所有变量。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值