• 日常搜索
  • 百度一下
  • Google
  • 在线工具
  • 搜转载

什么是PHP数组?

在本文中,您将了解什么是 php 中的数组的基础知识。您将学习如何创建数组以及如何使用关联数组和多维数组,并且您将看到许多使用 PHP 的数组值示例。

什么是PHP数组?  第1张 

什么是 PHP 中的数组?

在 PHP 中,数组是一种数据结构,它允许您将多个元素存储在单个变量中。这些元素存储为键值对。事实上,只要需要存储元素列表,就可以使用数组。通常情况下,数组中的所有项都具有相似的数据类型。

例如,假设您要存储水果名称。如果没有数组,您最终会创建多个变量来存储不同的水果名称。另一方面,如果您使用数组来存储水果名称,它可能看起来像这样:

<?php
$array_fruits = array('Apple', 'Orange', 'Watermelon', 'Mango');
?>

如您所见,我们使用$array_fruits变量来存储不同的水果名称。这种方法的一大优点是您可以$array_fruits稍后向数组变量添加更多元素。

在 PHP 中有很多方法可以操作数组值——我们将在本文的后面部分探讨这些方法。

如何初始化数组

在本节中,我们将探讨如何在 PHP 中初始化数组变量并在该变量中添加值。

当涉及到数组初始化时,有几种不同的方法。在大多数情况下,它array()是用于初始化数组的语言构造。

<?php
$array = array();
?>

在上面的代码片段中,$array变量是用一个空数组初始化的。

从 PHP 5.4 开始,您还可以使用以下语法来初始化数组。

<?php
$array = [];
?>

现在,让我们看看如何向这个 PHP 数组数据结构中的数组添加元素:

<?php
$array = [];
$array[] = 'One';
$array[] = 'Two';
$array[] = 'Three';
echo '<pre>';
print_r($array);
?>

上面的代码片段应该产生以下输出:

Array
(
    [0] => One
    [1] => Two
    [2] => Three
)

这里要注意的重要一点是 PHP 中的数组索引从 0 开始。每当您向数组添加一个新元素而不指定索引时,数组会自动分配一个索引。

当然,您也可以创建一个已经用值初始化的数组。如果您已经知道数组的值,这是用 PHP 声明数组的最简洁的方法。

<?php
$array = ['One', 'Two', 'Three'];
?>

如何访问数组元素

在上一节中,我们讨论了如何初始化数组变量。在本节中,我们将探讨访问数组元素的几种不同方式。

访问数组元素的第一个明显方法是通过数组键或索引获取它们。

<?php
$array = ['One', 'Two', 'Three'];
 
// get the first element of the $array array
echo $array[0];
echo "<br>";
 
// get the second element of the $array array
echo $array[1];
echo "<br>";
 
// get the third element of the $array array
echo $array[2];
echo "<br>";
?>

上面的代码片段应该产生以下输出:

One
Two
Three

编写上述代码的一种更简洁的方法是使用foreach循环遍历数组元素。  

<?php
$array = ['One', 'Two', 'Three'];
 
foreach ($array as $element) {
  echo $element;
  echo '<br>';
}
?>

上面的代码片段应该产生相同的输出,而且它需要更少的代码。

同样,您也可以使用for循环来遍历数组元素。

<?php
$array = ['One', 'Two', 'Three'];
$array_length = count($array);
 
for ($i = 0; $i < $array_length; ++$i) {
  echo $array[$i];
  echo '<br>';
}
?>

在这里,我们使用for循环遍历数组中的每个索引,然后回显存储在该索引中的值。在这段代码中,我们介绍了您在处理数组时最终会用到的最重要的函数之一:count。它用于计算数组中有多少个元素。

PHP 中的数组类型

在本节中,我们将讨论您可以在 PHP 中使用的不同类型的数组。

数值索引数组

具有数字索引的数组属于索引数组的类别。事实上,到目前为止我们在本文中讨论的示例都是索引数组。

当您未明确指定时,会自动分配数字索引。

<?php
$array = ['One', 'Two', 'Three'];
?>

在上面的例子中,我们没有为每个项目明确指定索引,所以它会自动用数字索引初始化。

当然,你也可以使用数字索引来创建索引数组,如下面的 PHP 结构片段所示:

<?php
$array = [];
$array[0] = 'One';
$array[1] = 'Two';
$array[2] = 'Three';
?>

也可以使用非连续或从零开始的数字键数组,如下例所示:

<?php
 
$array = [];
$array[3] = 'One';
$array[11] = 'Two';
$array[] = 'Three';
$array[-18] = 'Four';
$array[] = 'Five';
 
print_r($array);
/*
Array
(
    [3] => One
    [11] => Two
    [12] => Three
    [-18] => Four
    [13] => Five
)
*/
?>

不要依赖 PHP 中的未知数组来具有顺序数字键,除非您明确地将其键设置为那样。

关联数组

关联数组类似于索引数组,但您可以使用字符串值作为数组键。

让我们看看如何定义关联数组。

<?php
$employee = [
  'name' => 'John',
  'email' => 'john@example.com',
  'phone' => '1234567890',
];

或者,您也可以使用以下语法。

<?php
$employee = [];
$employee['name'] = 'John';
$employee['email'] = 'john@example.com';
$employee['phone'] = '1234567890';
?>

要访问关联数组的值,您可以使用索引或foreach循环。

<?php
$employee = [
  'name' => 'John',
  'email' => 'john@example.com',
  'phone' => '1234567890',
];
 
// get the value of employee name
echo $employee['name'];
 
// get all values
foreach ($employee as $key => $value) {
  echo $key . ':' . $value;
  echo '<br>';
}
?>

可以看到,这里我们直接查询得到了名字,然后我们通过foreach循环得到了数组中所有的键值对。

多维数组

在我们目前讨论的示例中,我们使用标量值作为数组元素。事实上,您甚至可以将数组作为元素存储在其他数组中——这是一个多维数组。

让我们看一下这个 PHP 数组示例:

<?php
$employee = [
  'name' => 'John',
  'email' => 'john@example.com',
  'phone' => '1234567890',
  'hobbies' => ['Football', 'Tennis'],
  'profiles' => ['facebook' => 'johnfb', 'twitter' => 'johntw']
];
?>

如您所见,数组hobbies中的键$employee包含一个爱好数组。同样,profiles键包含不同配置文件的关联数组。

让我们看看如何访问多维数组的值。

<?php
$employee = [
  'name' => 'John',
  'email' => 'john@example.com',
  'phone' => '1234567890',
  'hobbies' => ['Football', 'Tennis'],
  'profiles' => ['facebook' => 'johnfb', 'twitter' => 'johntw']
];
// access hobbies
echo $employee['hobbies'][0];
// Football
 
echo $employee['hobbies'][1];
// Tennis
 
// access profiles
echo $employee['profiles']['facebook'];
// johnfb
 
echo $employee['profiles']['twitter'];
// johntw
?>

如您所见,可以使用每个数组部分中该元素的索引或键访问多维数组的元素。

使用 PHP 解包数组值

从 7.4 版开始,PHP 添加了使用 spread( ...) 运算符就地扩展数组的功能。 

<?php
 
$plant_eaters = ["Horse", "Goat", "Rabbit"];
$meat_eaters = ["Lion", "Tiger", "Crocodile"];
 
$animals = ["Dog", ...$plant_eaters, ...$meat_eaters, "Cat"];
print_r($animals);
/*
Array
(
    [0] => Dog
    [1] => Horse
    [2] => Goat
    [3] => Rabbit
    [4] => Lion
    [5] => Tiger
    [6] => Crocodile
    [7] => Cat
)
*/
 
?>

最初,我们只能使用数字键在 PHP 中解压数组值。但是,PHP 8.1 支持使用字符串键解包数组。这里有些例子:

<?php
 
$default_colors = ["body" => "red", "heading" => "blue", "sidebar" => "yellow"];
$user_colors = ["body" => "white", "paragraph" => "black"];
 
$theme_colors = [...$default_colors, ...$user_colors];
 
print_r($theme_colors);
/*
Array
(
    [body] => white
    [heading] => blue
    [sidebar] => yellow
    [paragraph] => black
)
*/
 
?>

您应该注意,以这种方式解包数组会导致覆盖存储在基于字符串的键中的现有值,而数字键只会重新编号。在上面的示例中解包$user_colors之前$default_colors会将数组中的body 键值设置为。"red"$theme_colors

一些有用的 PHP 数组函数

在本节中,我们将介绍一些经常用于数组操作的有用数组函数。

count()功能_

该count()函数用于计算数组中元素的数量。如果您想用循环迭代数组,这通常很有用for。

<?php
$array = ['One', 'Two', 'Three'];
 
echo count($array);
// Output: 3
?>

但是,在使用循环遍历数组时应该小心for。这是因为无法保证数组中的数字键始终是连续的、从零开始或按简单的升序排列。

is_array()功能_

这是处理数组最有用的函数之一。它用于检查变量是数组还是其他数据类型。

<?php
$array = ['One', 'Two', 'Three'];
 
// check if the variable is an array
if (is_array($array))
{
  // perform some array operation
}
?>

如果不确定数据类型,则应始终在执行任何数组操作之前使用此函数。

in_array()功能_

如果你想检查一个元素是否存在于数组中,它是in_array()救援的函数。 

<?php
$array = ['One', 'Two', 'Three'];
 
// check if a variable is an array
if (in_array('One', $array))
{
  echo 'Yes';
}
else
{
  echo 'No';
}
?>

该in_array()函数的第一个参数是您要检查的元素,第二个参数是数组本身。

explode()功能_

该explode()函数将字符串拆分为多个部分并将其作为数组返回。例如,假设您有一个以逗号分隔的字符串,并且您希望以逗号分隔它。 

<?php
$string = "One,Two,Three";
 
// explode a string by comma
$array = explode(",", $string);
 
// output should be an array
echo '<pre>';
print_r($array);
 
// output
/*Array
(
    [0] => One
    [1] => Two
    [2] => Three
)*/
?>

该explode()函数的第一个参数是分隔符字符串(您要拆分的字符串),第二个参数是字符串本身。

implode()功能_

这与explode()函数相反——给定一个数组和一个粘合字符串,该implode()函数可以通过将数组的所有元素与它们之间的粘合字符串连接起来来生成一个字符串。

<?php
$array = ['One', 'Two', 'Three'];
 
$string = implode(",", $array);
 
// output should be a string
echo $string;
 
// output: One,Two,Three
?>

该implode()函数的第一个参数是胶水字符串,第二个参数是要内爆的数组。

array_push()功能_

该array_push()函数用于将新元素添加到数组的末尾。

<?php
$array = ['One', 'Two', 'Three'];
array_push($array, 'Four');
 
echo '<pre>';
print_r($array);
 
// output
/*Array
(
    [0] => One
    [1] => Two
    [2] => Three
    [3] => Four
)*/
?>

第一个参数是一个数组,随后的参数是将添加到数组末尾的元素。

array_pop()功能_

该array_pop()函数从数组末尾删除一个元素。

<?php
$array = ['One', 'Two', 'Three'];
$element = array_pop($array);
 
echo '<pre>';
print_r($array);
 
// output
/*Array
(
    [0] => One
    [1] => Two
)*/
?>

该array_pop()函数返回从数组中删除的元素,因此您可以将其拉入变量。与 一起array_push(),此函数对于实现堆栈等数据结构很有用。

array_slice()功能_

array_slice()当您想要提取给定数组的某些部分时,该函数很有用。它接受四个参数:数组、要切片的索引、要切片的元素数以及是否保留数字键。该函数将始终保留字符串键,而不管第四个参数如何。

<?php
 
$people = ["Adam", "Amanda", "Andrew", "Laura", "Monty", "Sally", "Sajal", "Steven"];
 
$members = array_slice($people, 2, 4);
print_r($members);
/*
Array
(
    [0] => Andrew
    [1] => Laura
    [2] => Monty
    [3] => Sally
)
*/
?>

偏移值也可以是负数。在这种情况下,切片位置将从数组的末尾开始确定。

array_splice()功能_

array_splice()当你想删除数组的一部分和/或用其他东西替换它时,th函数很有用。它还接受四个参数:数组、开始删除的偏移索引、要删除的长度以及删除值的可选替换。

<?php
 
$all_items = ["Charger", "Keyboard", "Smartphone", "Baseball", "Bat", "Mouse"];
$replacements = ["Pen", "Headphones"];
 
array_splice($all_items, 3, 2, $replacements);
print_r($all_items);
/*
Array
(
    [0] => Charger
    [1] => Keyboard
    [2] => Smartphone
    [3] => Pen
    [4] => Headphones
    [5] => Mouse
)
*/
?>

最后

就是这样——现在您知道 PHP 中的数组是什么了!

这就是开始在 PHP 中使用数组进行编码所需了解的全部内容。您了解了如何创建数组以及如何从中检索元素。您了解了 PHP 中不同类型的数组,并了解了一些用于处理数组的最有用的内置 PHP 函数。


文章目录
  • 什么是 PHP 中的数组?
    • 如何初始化数组
  • PHP 中的数组类型
    • 数值索引数组
    • 关联数组
    • 多维数组
  • 使用 PHP 解包数组值
  • 一些有用的 PHP 数组函数
    • count()功能_
    • is_array()功能_
    • in_array()功能_
    • explode()功能_
    • implode()功能_
    • array_push()功能_
    • array_pop()功能_
    • array_slice()功能_
    • array_splice()功能_
  • 最后
  • 发表评论