一、定义语法
1、索引数组
2、php5.4之后简化的语法
3、关联数组
4、多维数组
$colors = array("Red", "Green", "Blue");
$colors = ["Red", "Green", "Blue"];
$person = array("name" => "John", "age" => 30, "city" => "New York");
$employees = array(
array("name" => "John", "age" => 30, "job" => "Developer"),
array("name" => "Jane", "age" => 25, "job" => "Designer")
);
PHP数组特点:
1、可以整数下标或者字符串下标
若数组下标均为整数,则称为索引数组。
若数组下标均为字符串,则称为关联数组。
混合下标的话称为混合数组
2、数组元素的顺序以放入顺序为准,与下标无关
3、数字下标的增长特性:从0开始自动增长,若中间手动加入较大的下标,则后面则会从当前最大下标+1增长。
4、特殊值下标的自动转换
<?php
// 特殊下标自动转换
$arr1[false] = false;
$arr1[true] = true;
$arr1[NULL] = NULL;
var_dump($arr1); // array(3)([0]=>bool(false),[1]=>bool(true) [""]->NULL)
5、PHP数组中类型元素没有限制。
6、PHP中数组元素没有长度限制。
补充:PHP中数组是很大的数据,故会存储在堆区。
二、遍历数组
使用 foreach
循环
foreach ($array as $value) {
// 执行操作,$value 是数组 $array 中的每个元素的值
}
关联数组的遍历:
$person = ["name" => "John", "age" => 30, "city" => "New York"];
foreach ($person as $key => $value) {
echo "$key: $value <br>";
}
输出:
name: John
age: 30
city: New York
索引数组的遍历:
$colors = ["Red", "Green", "Blue"];
foreach ($colors as $index => $color) {
echo "Index $index: $color <br>";
}
输出:
Index 0: Red
Index 1: Green
Index 2: Blue
三、数组相关函数
a、数组排序函数
1、sort():对数组进行升序排序。键值关联性被丢弃,即键名被重置为整数索引。
$arr = [3, 1, 2];
sort($arr);
print_r($arr); // 输出:[1, 2, 3]
2、rsort():对数组进行降序排序。键值关联性同样被丢弃。
$arr = [3, 1, 2];
rsort($arr);
print_r($arr); // 输出:[3, 2, 1]
3、asort():按值保持索引关联性的升序排序。
$arr = ['b' => 3, 'a' => 1, 'c' => 2];
asort($arr);
print_r($arr); // 输出:['a' => 1, 'c' => 2, 'b' => 3]
4、arsort():按值保持索引关联性的降序排序。
$arr = ['b' => 3, 'a' => 1, 'c' => 2];
arsort($arr);
print_r($arr); // 输出:['b' => 3, 'c' => 2, 'a' => 1]
5、ksort():按键名升序排序。
$arr = ['b' => 3, 'a' => 1, 'c' => 2];
ksort($arr);
print_r($arr); // 输出:['a' => 1, 'b' => 3, 'c' => 2]
6、krsort():按键名降序排序。
$arr = ['b' => 3, 'a' => 1, 'c' => 2];
krsort($arr);
print_r($arr); // 输出:['c' => 2, 'b' => 3, 'a' => 1]
sort()
和rsort()
适用于索引数组;
asort()
和arsort()
适用于关联数组并保持键值关联;
ksort()
和krsort()
则按照键名进行排序。
print_r
函数会将变量以人类可读的方式输出到浏览器或者命令行界面。对于数组,它会显示数组的键和值,并且会自动递归地显示多维数组的内容。
shuffle()
是 PHP 中用来随机打乱数组元素顺序的函数。它会随机地重新排列数组中的元素,返回一个打乱顺序后的数组,数组下标会重排。
b、数组指针函数
current():
- 返回数组中当前指针位置的元素值。
key():
- 返回数组中当前指针位置的键名。
next():
- 将数组指针向前移动一位,并返回当前元素的值。(下一个元素的值)
prev():
- 将数组指针向后移动一位,并返回当前元素的值。(上一个元素的值)
reset():
- 将数组指针重置到第一个元素,并返回第一个元素的值。
end():
- 将数组指针指向最后一个元素,并返回最后一个元素的值。
each():
- 返回当前元素的键名和值,并将指针向前移动一位。每次调用
each()
函数会返回一个包含四个元素的数组:[0] => key, [1] => value, 'key' => key, 'value' => value]
。如果已经遍历到数组末尾,则返回false
。
next,prev会移动指针,可能导致超出数组,此时再使用next、prev便不能再返回数组,只
能通过end/reset。
c、其他函数
-
count():返回数组中的元素数目。
-
array_push():将一个或多个元素压入数组的末尾。
-
array_pop():弹出数组的最后一个元素。
-
array_shift():将数组的第一个元素移出并返回。
-
array_unshift():在数组开头插入一个或多个元素。
-
array_reverse():返回一个翻转顺序后的数组。
-
in_array():检查数组中是否存在指定的值。
-
array_values():返回数组中所有的值,重新建立索引。
-
array_reverse():返回一个翻转顺序后的数组。
-
array_keys():返回数组中所有的键名。
在 PHP 中,虽然没有内置的数据结构(如堆、栈、队列等)类似于其他编程语言(如Python或Java)提供的标准库,但可以通过数组和一些自定义实现来模拟这些数据结构的行为。
1. 栈(Stack)
栈是一种后进先出(LIFO)的数据结构
2、 队列(Queue)
队列是一种先进先出(FIFO)的数据结构
- 队列操作:使用
array_shift
和array_unshift
,在数组的开头进行添加和移除,实现先进先出的数据结构。- 栈操作:使用
array_push
和array_pop
,在数组的末尾进行添加和移除,实现后进先出的数据结构。