在本教程中,我们将学习PHP数组,讨论索引数组和关联数组,并向您展示操作数组的各种技术。
在PHP中,数组由相关的元素组成,这些元素具有相同的特性。每个数组的元素都有一个键和一个值。
数组中的键可以是字符串或数字。使用键可以查找元素的值。元素的值可以是字符串、数字、布尔值、对象甚至其他数组。
PHP中数组有两种类型:
索引数组
关联数组
与其他编程语言(如C/C++)不同,PHP不需要在创建数组时指定数组的大小。PHP也不需要在使用之前声明数组变量。
要创建数组,请在一对方括号内指定一个键,后跟数组变量,并按如下方式为其赋值:
<?php
$languages
[0] =
'PHP'
;
// 一个语言的数组
[1] =
'C'
// 添加第二个元素
[2] =
'Python'
// 添加第三个元素
echo
[0];
// 显示第一个元素
[1];
// 显示第二个元素
[2];
// 显示第三个元素
我们定义了一个包含三个元素的语言数组。它是一个索引数组,因为其元素的值由数值引用。
如果使用数值作为数组的键,则可以在初始化时忽略它们,如下所示:
[] =
要创建关联数组,需要显式指定其元素的键。以下示例定义了颜色关联数组:
$colors
[
'red'
] =
'#FF0000'
'green'
'#00FF00'
'blue'
'#0000FF'
PHP提供了一个array()函数,用于创建索引数组或关联数组。
以下示例创建了包含三个元素的语言数组:
$language
=
array
(
,
);
要创建关联数组,可以使用array()函数,并为每个元素定义显式键,如下所示:
?php
=>
'0000FF'
在PHP 5.4以后的版本,还可以使用短语法[]而不是array()函数,例如:
$color
= [
];
PHP提供了range()函数来帮助您创建一个范围数组,并用值范围内的元素填充它。下面是range()函数:
ange(int low,int high,[optional in step])
您可以指定具有最高值和最低值的范围,以及一个名为step的可选参数,该参数指示元素值之间的距离,默认是1。
例如,要创建一个包含10个整数的数组,可以使用如下的range()函数:
$int_array
= range(1,10);
如果要创建一个数组,其中只包含从2到10的偶数,可以使用range()函数如下:
$int_even
= range(2,10,2);
使用print_r()函数检查整个数组非常方便。请看下面的例子:
// 显示索引数组
'<pre>'
print_r(
'</pre>'
// 显示关联数组
输出
Array
[0] => PHP
[1] => C
[2] => Python
)
[red] => #FF0000
[green] => #00FF00
[blue] => 0000FF
另一种显示数组的方法是使用var_dump()函数:
var_dump(
输出:
(3) {
[0]=>
string(3)
"PHP"
[1]=>
string(1)
"C"
[2]=>
string(6)
"Python"
}
"red"
]=>
string(7)
"#FF0000"
"green"
"#00FF00"
"blue"
"0000FF"
要获取数组中的元素数量,可以使用count()函数。
= range(1,20);
'数组元素的数目:'
.
count
) .
'<br/>'
$book
'title'
'PHP 教程'
'site'
'之路教程theitroad'
PHP提供了一个名为is_array()的函数,用于测试变量的类型是否为array。如果变量是数组,则is_array()函数返回true,否则返回false。
让我们看看下面的例子:
$myarray
"php"
"c"
"python"
if
is_array
))
'$myarray 是一个数组'
else
'$myarray 不是一个数组'
//
$size
= 3;
'$size 是一个数组'
'$size 不是一个数组'
要向数组中添加新元素,需要为新元素分配一个值,方法是根据数组类型指定数字或字符串索引。
// 使用数值索引添加新元素到数组
$commands
"Add"
"Remove"
// 使用字符串索引添加新元素到数组
'royalblue'
'#4169e1'
PHP还提供了一个内置函数array_push(),用于在数组末尾添加一个或多个元素。array_push函数成功时返回true,失败返回false。
请看下面的例子:
$provinces
"浙江"
array_push
'江苏'
'广东'
而要在数组的开头添加元素,则可以使用array_unshift()函数。
array_unshift
'浙江'
要从数组中删除最后一个元素,可以使用array_pop()函数。函数将返回被删除的元素:
array_pop
$states
// $province = '江苏'
PHP提供in_array()函数,用于检查元素是否在数组中。
将元素和数组参数传递给函数。如果找到元素,则函数返回true,否则返回false。还有第三个可选参数,名为strict。如果将此参数传递为true,则该函数不仅将检查元素的值,还将检查元素的数据类型。
in_array ( mixed
$needle
$haystack
[, bool
$strict
= FALSE ] ) : bool
请看下面的示例:
$os
"Mac"
"NT"
"Irix"
"Linux"
(in_array(
)) {
"Got Irix"
"mac"
"Got mac"
?>
要检查关联数组中是否存在某个键,可以使用array_key_exists()函数。如果在数组中找到键,则函数返回true,否则返回false。
$search_array
'first'
=> 1,
'second'
=> 4);
array_key_exists
"The 'first' element is in the array"
要在关联数组中获得一组特定的键,可以使用array_keys()函数。array_keys()函数将返回一个包含数组所有键的数组。
'France'
'French'
'England'
'English'
'India'
'Indian'
'China'
'Chinese'
$country
array_keys
输出:
[0] => France
[1] => England
[2] => India
[3] => China
如果要获取关联数组的所有值,请使用array_values()函数。
$lang
array_values
[0] => French
[1] => English
[2] => Indian
[3] => Chinese
PHP提供了一种非常特殊的循环语句,称为foreach,它允许您对数组进行循环遍历。foreach语句只适用于数组和对象。
要遍历索引数组,可以使用以下语法:
foreach
$array_expression
as
$value
) {
// 在这里处理$value
下面的示例循环遍历索引数组并显示每个元素的值:
$pl
'Perl'
'C/C++'
'C#'
'Java'
$p
要循环关联数组,可以使用以下语法:
$key
// 在这里处理$key和$value
下面的例子演示了如何循环$address关联数组:
$address
'city'
'杭州'
'province'
'country'
'中国'
'<address>'
"$key:\t $value"
'</address>'
PHP提供了两个对索引数组进行排序的函数:sort()和rsort()。sort()函数对索引数组按升序排序,而rsort()函数对索引数组按降序排序。
要对一个索引数组排序,你需要像下面这样把数组传递给函数:
sort(
'<br>'
rsort(
要对关联数组排序,可以使用这两个函数:asort()和arsort()。
asort()函数对关联数组按升序排序。arsort()函数对关联数组按降序排序。
注意,如果对关联数组使用sort()或rsort()函数,则关联数组会被转换为索引数组,因此将会丢失每个元素的键及其值之间的关系。
// 按升序排列
asort(
// 按降序排列
arsort(
要根据键的值对关联数组排序,可以使用函数:ksort()和krsort()。
ksort()函数按键的升序对关联数组进行排序。krsort()函数按键的降序对关联数组进行排序。
ksort(
krsort(
要将两个或多个数组合并到一个数组中,可以使用array_merge()函数。
下面的例子演示了如何合并两个整数数组:
$a1
= range(1,3);
$a2
= range(5,9);
// 合并两个数组
$a
array_merge
[0] => 1
[1] => 2
[2] => 3
[3] => 5
[4] => 6
[5] => 7
[6] => 8
[7] => 9
PHP提供了一个非常方便的函数list(),它可以帮助您将索引数组中的值赋给一组变量 。
下面的示例演示如何使用list()函数。
$section
'PHP 数组'
list(
$tutorial
$topic
) =
// PHP 教程
// PHP 数组
要将字符串转换为数组,可以使用explode()函数。它将根据指定的分隔符分割字符串,并返回一个包含元素的数组,这些元素是分割操作生成的子字符串。
下面的示例使用逗号(,)作为分隔符将字符串转换为数组。结果是一个字符串数组。
$fruits
'orange,apple,mango,coconut'
$fruits_a
explode
','
[0] => orange
[1] => apple
[2] => mango
[3] => coconut
使用implode()函数将数组转换为字符串,如下所示:
'orange'
'apple'
'mango'
'coconut'
= implode(
';'
orange;apple;mango;coconut
原文链接:https://codingdict.com/