# PHP 数组

> 原文： [https://zetcode.com/lang/php/arrays/](https://zetcode.com/lang/php/arrays/)

在 PHP 编程教程的这一部分中，我们介绍了数组。 我们初始化数组并从中读取数据。

## PHP 数组定义

数组是数据的集合。 变量一次只能容纳一项。 数组可以容纳多个项目。 大多数编程语言都有各种类型的集合，包括列表，映射，数组，队列，栈和元组。 PHP 有不同的方法。 它具有一种通用集合，即数组。 使用不同的语法，PHP 中的数组将表现为列表，数组或映射。

从技术上讲，PHP 数组是一个映射。 它也称为关联数组。 映射将值与键相关联。

数组用于存储我们应用的数据。 我们对数组做三件事。 首先，我们使用应用数据初始化它们。 接下来，我们使用赋值或 PHP 数组函数修改数据。 我们有很多函数可用于数组。 它们使我们能够修改，排序，合并，切片，混洗数组内的数据。 有一些特定的数据库处理函数可用于从数据库查询中填充数组。 其他几个函数返回数组。 最后，我们将数据显示到控制台，或在 Web 应用中显示到浏览器。

## PHP 初始化数组

从 PHP 5.4 开始，可以使用方括号使用短数组语法初始化数组。

`init1.php`

```php
<?php

$names = ["Jane", "Lucy", "Timea", "Beky", "Lenka"];

print_r($names);

```

我们创建一个`$names`数组，该数组存储五个女性名称。 `print_r()`函数打印有关该变量的人类可读信息。

```php
$ php init1.php 
Array
(
    [0] => Jane
    [1] => Lucy
    [2] => Timea
    [3] => Beky
    [4] => Lenka
)

```

从输出中，我们可以看到名称及其索引，从而可以访问它们。

传统上，数组是使用`array()`函数初始化的。 以最简单的形式，该函数采用任意数量的逗号分隔值。

`init2.php`

```php
<?php

$names = array("Jane", "Lucy", "Timea", "Beky", "Lenka");

print_r($names);

```

使用`array()`函数创建相同的女性名称数组。

可以通过将值分配给数组索引来初始化数组。

`init3.php`

```php
<?php

$continents[0] = "America";
$continents[1] = "Africa";
$continents[2] = "Europe";
$continents[3] = "Asia";
$continents[4] = "Antarctica";
$continents[5] = "Australia";

print_r($continents);

```

我们通过将值分配给数组索引来创建`$continents`数组。 `"America"`的索引为 0，`"Europe"`的索引为 2，依此类推。

`init4.php`

```php
<?php

$continents = [ 1 => "America", 2 => "Africa",
    3 => "Europe", 4 => "Asia", 5 => "Antarctica", 
    6 => "Australia" ];

print_r($continents);

```

在此示例中，我们使用指定的索引创建`$continents`数组。 默认情况下，第一个索引为零。 在我们的例子中，我们从 1 开始。

```php
$ php init4.php 
Array
(
    [1] => America
    [2] => Africa
    [3] => Europe
    [4] => Asia
    [5] => Antarctica
    [6] => Australia
)

```

现在，我们有了一系列具有选定索引的大洲。

索引不必是连续的数字。

`init5.php`

```php
<?php

$languages[10] = "PHP";
$languages[20] = "Python";
$languages[30] = "Ruby";
$languages[40] = "PERL";
$languages[50] = "Java";

print_r($languages);

```

在示例中，我们选择数字 10、20、30、40 和 50 作为`$languages`数组的索引。

当我们对 PHP 数组进行赋值初始化时，可以省略索引。 PHP 将自动为我们创建索引。

`init6.php`

```php
<?php

$actors[] = "Philip Seymour Hoffman";
$actors[] = "Tom Cruise";
$actors[] = "Bill Paxton";
$actors[] = "Adrien Brody";
$actors[] = "Danie Craig";

print_r($actors);

```

创建了一组参与者。 没有设置特定的索引。

```php
$ php init6.php 
Array
(
    [0] => Philip Seymour Hoffman
    [1] => Tom Cruise
    [2] => Bill Paxton
    [3] => Adrien Brody
    [4] => Danie Craig
)

```

PHP 解释器已创建从零开始的连续索引。

`init7.php`

```php
<?php

$novels[10] = "Doctor Zhivago"; 
$novels[11] = "War and Peace"; 
$novels[] = "In Cold Blood"; 
$novels[20] = "Crime and Punishment"; 
$novels[] = "Catch XII"; 

print_r($novels);

```

在此脚本中，我们省略了两个索引。 PHP 将添加它们。 它将创建索引 12 和索引 21。

```php
$ php init5.php 
Array
(
    [10] => Doctor Zhivago
    [11] => War and Peace
    [12] => In Cold Blood
    [20] => Crime and Punishment
    [21] => Catch XII
)

```

PHP 已自动创建索引 12 和 21。

数组的键也可以是字符串。

`init8.php`

```php
<?php

$countries = [
    "de" => "Germany", "sk" => "Slovakia",
    "us" => "United States", "ru" => "Russia",
    "hu" => "Hungaria", "pl" => "Poland" ];

echo $countries["de"] . "\n";
echo $countries["sk"] . "\n";

```

我们创建一个带有字符串索引的`$countries`数组。

```php
$ php init8.php 
Germany
Slovakia

```

这是`init8.php`示例的输出。

## PHP 读取数组

接下来，我们将读取数组的内容。 有几种方法可以显示数组中的数据。

`peruse1.php`

```php
<?php

$languages[10] = "PHP";
$languages[20] = "Python";
$languages[30] = "Ruby";
$languages[40] = "PERL";
$languages[50] = "Java";

echo $languages[10], "\n";
echo $languages[20], "\n";
echo $languages[30], "\n";
echo $languages[40], "\n";
echo $languages[50], "\n";

```

我们可以通过数组的索引访问数据。

```php
$ php peruse1.php 
PHP
Python
Ruby
PERL
Java

```

我们已将所有五种语言打印到控制台。

`peruse2.php`

```php
<?php

$continents = [ "America", "Africa", "Europe", 
    "Asia", "Australia", "Antarctica" ];

$len = count($continents);

for ($i = 0; $i < $len; $i++) {
    echo $continents[$i], "\n";   
}

```

在此示例中，我们使用`for`语句细读`$continents`数组。

```php
$len = count($continents);

```

首先，我们使用`count()`函数计算数组中的元素数量。

```php
for ($i = 0; $i < $len; $i++) {
    echo $continents[$i], "\n";   
}

```

`for`循环通过索引`0 .. $len-1`打印数组中的元素。

`peruse3.php`

```php
<?php

$continents = [ "America", "Africa", "Europe", "Asia", 
    "Australia", "Antarctica" ];

foreach ($continents as $continent) {
    echo $continent, "\n";    
}

```

细读数组的最简单方法是使用`foreach`语句。 该语句一个接一个地遍历数组，并将当前元素放入临时`$continent`变量中。 它访问数据时不使用其索引或键。

`walk.php`

```php
<?php

$countries = [ "de" => "Germany", "sk" => "Slovakia",
    "us" => "United States", "ru" => "Russia",
    "hu" => "Hungaria", "pl" => "Poland" ];

function show_values($value, $key) { 

    echo "The $key stands for the $value\n";
}

array_walk($countries, 'show_values');

```

在最后一个示例中，我们使用`array_walk()`函数细读数组。 它将用户函数应用于数组的每个成员。 用户函数将键和项目的值作为参数。

```php
$ php walk.php 
The de stands for the Germany
The sk stands for the Slovakia
The us stands for the United States
The ru stands for the Russia
The hu stands for the Hungary
The pl stands for the Poland

```

我们将关键字和值都打印到句子中的控制台上。

在 PHP 教程的这一部分中，我们使用了数组。 我们初始化了数组并从中读取数据。 在下一章中，我们将使用各种 PHP 数组函数。