一、定义数组
1.索引数组:
索引数组是最基本的数组类型,使用数字作为键(索引)来访问数组元素。可以使用以下两种方式定义索引数组:
$array1 = array(1, 2, 3, 4, 5);
var_dump($array1);
// 方法二:使用简化的方括号语法(PHP 5.4+)
$array2 = [1, 2, 3, 4, 5];
var_dump($array2);
在上述示例中, a r r a y 1 和 array1和 array1和array2都是包含了五个整数元素的索引数组。
2.关联数组:
关联数组使用字符串键来访问数组元素,每个元素都由键值对(key-value pair)组成。可以使用以下两种方式定义关联数组:
// 方法一:使用array()函数
$array1 = array('name' => 'John', 'age' => 30, 'city' => 'New York');
// 方法二:使用简化的方括号语法(PHP 5.4+)
$array2 = ['name' => 'John', 'age' => 30, 'city' => 'New York'];
在上述示例中, a r r a y 1 和 array1和 array1和array2都是包含了三个键值对的关联数组。
3.多维数组:
PHP还支持多维数组,即数组中的元素也可以是数组。可以使用以下方式定义多维数组:
$array = array(
array(1, 2, 3),
array('a', 'b', 'c'),
array(true, false, true)
);
在上述示例中,$array是一个包含了三个子数组的多维数组。
可以使用索引或关联数组的方式访问数组元素。例如,对于索引数组,可以使用索引值来访问元素:
echo $array1[0]; // 输出:1
对于关联数组,可以使用键来访问元素:
echo $array2['name']; // 输出:John
以上是PHP中定义数组的基本方法和一些示例。数组是PHP中非常重要的数据结构,它提供了强大的功能,可以方便地处理和操作多个值。
二、遍历数组
在PHP中,遍历数组是一种常见的操作,用于访问数组中的每个元素。PHP提供了多种方式来遍历数组,下面介绍几种常用的方法:
1.for循环遍历:
使用for循环可以遍历索引数组。通过使用数组的count()函数可以获取数组的长度,然后使用循环变量来访问数组的每个元素。
$array = [1, 2, 3, 4, 5];
$length = count($array);
for ($i = 0; $i < $length; $i++) {
echo $array[$i] . " ";
}
上述代码将输出:1 2 3 4 5。
2.while循环遍历:
使用while循环可以遍历索引数组。通过使用数组的reset()和each()函数可以重置数组的指针并获取当前元素,然后使用循环迭代指针来访问数组的每个元素。
$array = [1, 2, 3, 4, 5];
reset($array);
while (list(, $value) = each($array)) {
echo $value . " ";
}
上述代码将输出:1 2 3 4 5。
这些是PHP中常用的遍历数组的方法。根据具体的需求和数组类型,选择适合的遍历方式可以更方便地操作数组中的元素。
3.foreach循环遍历:
使用foreach循环可以遍历索引数组和关联数组。它会自动迭代数组中的每个元素,并将其赋值给一个临时变量,然后执行指定的代码块。
$array = [1, 2, 3, 4, 5];
foreach ($array as $value) {
echo $value . " ";
}
上述代码将输出:1 2 3 4 5。
对于关联数组,可以使用键值对的方式遍历:
$array = ['name' => 'John', 'age' => 30, 'city' => 'New York'];
foreach ($array as $key => $value) {
echo $key . ": " . $value . " ";
}
上述代码将输出:name: John age: 30 city: New York。
三、遍历数组
在PHP中,有几个预定义的特殊数组,它们提供了有关脚本执行环境和其他有用信息的访问方式。以下是一些常见的预定义数组:
1._GET:
_GET是一个关联数组,包含通过GET方法传递给当前脚本的所有参数和值。GET方法通过URL的查询字符串传递参数。
// URL: example.com?name=John&age=30
echo $_GET['name']; // 输出:John
echo $_GET['age']; // 输出:30
2._POST:
_POST是一个关联数组,包含通过POST方法传递给当前脚本的所有参数和值。POST方法通过请求的正文传递参数,通常用于提交表单数据。
// 表单:<form method="post" action="process.php">...</form>
echo $_POST['username']; // 输出表单中名为"username"的输入值
echo $_POST['password']; // 输出表单中名为"password"的输入值
3._REQUEST:
_REQUEST是一个关联数组,包含通过GET、POST和COOKIE方法传递给当前脚本的所有参数和值。它合并了ET、_POST和$_COOKIE数组的内容。
echo $_REQUEST['name']; // 获取GET或POST参数中名为"name"的值
echo $_REQUEST['language']; // 获取GET或POST参数中名为"language"的值
4._SESSION:
_SESSION是一个关联数组,用于在不同页面之间存储和访问会话数据。它可以在用户访问网站时跨多个页面保持数据的持久性。
// 在使用session之前,需要先调用session_start()函数
session_start();
// 设置session值
$_SESSION['username'] = 'John';
// 获取session值
echo $_SESSION['username']; // 输出:John
5._COOKIE:
_COOKIE是一个关联数组,包含通过HTTP Cookie传递给当前脚本的所有cookie值。
echo $_COOKIE['username']; // 输出名为"username"的cookie值
echo $_COOKIE['language']; // 输出名为"language"的cookie值
6._SERVER:
_SERVER是一个包含了服务器和执行环境信息的关联数组。它提供了有关当前脚本运行的服务器和请求的各种信息,如请求的方法、URL、主机名、用户代理等。
echo $_SERVER['REQUEST_METHOD']; // 输出当前请求的方法(GET、POST等)
echo $_SERVER['SERVER_NAME']; // 输出当前服务器的主机名
echo $_SERVER['HTTP_USER_AGENT']; // 输出当前用户代理(浏览器信息)
7._FILES:
_FILES:_FILES是一个关联数组,用于处理通过HTTP POST方法上传的文件。它包含了上传文件的相关信息,如文件名、临时文件路径、文件类型等。
echo $_FILES['file']['name']; // 输出上传文件的原始文件名
echo $_FILES['file']['tmp_name']; // 输出上传文件的临时文件路径
echo $_FILES['file']['type']; // 输出上传文件的类型
8._ENV
_ENV是一个包含了环境变量的关联数组。它提供了访问服务器环境变量的方式,如操作系统信息、路径设置等。
echo $_ENV['OS']; // 输出操作系统的名称
echo $_ENV['PATH']; // 输出环境变量中的路径设置
9.GLOBALS:
GLOBALS:GLOBALS是一个包含了当前脚本中全局变量的关联数组。它可以用于在函数或方法中访问全局变量。
$globalVar = 'Hello';
function testFunction() {
echo $GLOBALS['globalVar']; // 输出全局变量$globalVar的值
}
testFunction(); // 输出:Hello
四、数组的一些函数
1.count()
count():用于计算数组中元素的数量。
$numbers = [1, 2, 3, 4, 5];
$count = count($numbers); // 输出 5
2.array_push()
array_push():向数组末尾添加一个或多个元素。
$fruits = ['apple', 'banana'];
array_push($fruits, 'orange', 'grape');
// $fruits 现在包含 ['apple', 'banana', 'orange', 'grape']
3.array_pop()
array_pop():从数组末尾删除并返回最后一个元素。
$fruits = ['apple', 'banana', 'orange'];
$lastFruit = array_pop($fruits);
// $lastFruit 等于 'orange',$fruits 现在包含 ['apple', 'banana']
4.array_shift()
array_shift():从数组开头删除并返回第一个元素。
$fruits = ['apple', 'banana', 'orange'];
$firstFruit = array_shift($fruits); // $firstFruit 等于 'apple',$fruits 现在包含 ['banana', 'orange']
5.array_unshift()
array_unshift():在数组开头插入一个或多个元素。
$fruits = ['banana', 'orange'];
array_unshift($fruits, 'apple', 'grape');
// $fruits 现在包含 ['apple', 'grape', 'banana', 'orange']
6.array_merge()
array_merge():将一个或多个数组合并为一个数组。
$fruits = ['apple', 'banana'];
$moreFruits = ['orange', 'grape'];
$allFruits = array_merge($fruits, $moreFruits);
// $allFruits 包含 ['apple', 'banana', 'orange', 'grape']
7.array_slice()
array_slice():从数组中返回指定范围的元素。
在这里插入代码片
$numbers = [1, 2, 3, 4, 5];
$sliced = array_slice($numbers, 1, 3);
// $sliced 包含 [2, 3, 4]
8.array_search()
array_search():在数组中搜索给定的值,并返回对应的键名,如果找不到则返回 false。
$fruits = ['apple', 'banana', 'orange'];
$key = array_search('banana', $fruits); // $key 等于 1
9.array_key_exists()
array_key_exists():检查数组中是否存在指定的键名。
$fruits = ['apple' => 'red', 'banana' => 'yellow'];
$exists = array_key_exists('apple', $fruits); // 返回 true
10.array_values()
array_values():返回数组中所有的值,组成一个新的索引数组。
$fruits = ['apple' => 'red', 'banana' => 'yellow'];
$values = array_values($fruits);
// $values 包含 ['red', 'yellow']
11.array_keys()
array_keys():返回数组中所有的键名,组成一个新的索引数组。
$fruits = ['apple' => 'red', 'banana' => 'yellow'];
$keys = array_keys($fruits);
// $keys 包含 ['apple', 'banana']
12.array_reverse()
array_reverse():将数组中的元素顺序反转。
$numbers = [1, 2, 3, 4, 5];
$reversed = array_reverse($numbers);
// $reversed 包含 [5, 4, 3, 2, 1]
13.array_unique()
array_unique():移除数组中重复的值,并返回新的数组。
$numbers = [1, 2, 2, 3, 3, 4, 5];
$unique = array_unique($numbers);
// $unique 包含 [1, 2, 3, 4, 5]
14.array_combine()
array_combine():将一个数组的值作为键名,另一个数组的值作为对应的值,创建一个新的数组。
$keys = ['apple', 'banana', 'orange'];
$values = ['red', 'yellow', 'orange'];
$combined = array_combine($keys, $values);
// $combined 包含 ['apple' => 'red', 'banana' => 'yellow', 'orange' => 'orange']
15.in_array()
in_array():检查一个值是否存在于数组中。
$fruits = ['apple', 'banana', 'orange'];
$exists = in_array('banana', $fruits); // 返回 true