今天你将学习 PHP
中的数组创建和操作。
首先,这是 Web
开发中非常常见的场景,它将帮助你理解为什么我们需要数组。
在下一个示例中,我们需要显示产品及其价格的列表。
1 | $product1 = "iPad"; |
你可以想象,此代码远非最佳。想象一下,如果我们有 100
种产品甚至 10,000
种产品。
有一种方法可以更有效地完成前面的示例数组。
PHP
中的数组是值的列表。数组中的值可以是不同类型的。
定义数组
要定义数组,我们使用方括号 [ ]
1 | $products = []; |
变量 $products
是一个数组
可以创建一个包含内容的数组
1 | $products = ['iPad', 'iPhone', 'iWatch']; |
此数组包含三个字符串:iPad、iPhone、iWatch
每个数组元素都用逗号分隔。
数组中可以包含不同类型的变量
1 | $array = ['First entry', 100, true]; |
甚至可以在数组中创建数组
1 | $array = ['First entry', 100, ['iPad', 'iPhone'], false]; |
访问项目
1 | echo $array[0]; |
数组元素的索引从 0
开始。因此,第一个项位于位置 0
,第二个项位于位置 1
,依此类推。
1 | $array = ['First entry', 100, ['iPad', 'iPhone'], false]; |
要访问数组中的数组,请使用以下语法
1 | echo $array[2][1]; |
这里我们显示元素 2
,即 [‘iPad’, ‘iPhone’]
那么元素 1
就是 iPhone
如果你尝试访问不存在的项目。PHP
将返回警告和值 null
。
1 | $array = ['First entry', 100, true]; |
计数
要确定数组中的项目数,可以使用 count()
函数
1 | $array = ['First entry', 100, true]; |
操作
在数组末尾添加一个元素
1 | $array[] = 'Last'; |
从数组中删除一个元素
1 | unset($array[0]); |
使用 implode 函数将数组转换为字符串
1 | $array = ['One', 'Two', 'Three']; |
第一个参数是分隔符。
使用 explode 函数将字符串转换为数组
1 | $text = 'William, Shawn, John'; |
第一个参数是分隔符。
遍历
foreach
函数对数组的每个元素执行代码。
1 | $names = ['William', 'Shawn', 'John']; |
第一个参数是要浏览的数组的名称,第二个参数表示对当前元素的引用。
关联数组
到目前为止,我们已经了解了数组的工作原理。它们有一个从 0
开始的数字键。
可以使用自定义键创建数组。这就是 PHP
所称的关联数组。
1 | $person = ['age' => 45, 'genre' => 'men']; |
这里的“age”和“gender”是键。45 和 men 是与这些键关联的值。
请注意,一些编程语言将这种类型的数组称为字典。
关联数组非常实用,你必须很好地理解它们,因为你将经常使用它们。它们非常适合存储信息。
1 | $product = ['id' => 100, 'name' => 'iPad', 'price' => 699]; |
使用键访问数组值
1 | echo "Product :" . $product['name']; |
通过指定新键,可以向数组添加键/值
1 | $product['qty'] = 5; |
可以检查键名是否存在
1 | $product = ['id' => 100, 'name' => 'iPad', 'price' => 699]; |
使用值和键循环关联数组
1 | foreach($names as $key => $value) { |
连接:连接两个数组
1 | $names1 = ['William', 'Paul', 'Tom']; |
与扩展运算符连接 (...)
1 | $names1 = ['William', 'Paul', 'Tom']; |
这里,数组名称 (...$names)
之前的扩展运算符会解构该数组。
关联数组的数组
经常使用的模式是包含关联数组的数组。
1 | $items = [ |
这种表格非常适合表示数据。可以循环显示每个项目
1 | foreach($items as $item) { |
as
语句创建对数组项的引用。
检索数组的一部分
有多个函数可让你检索数组的一部分。仅检索键或值
1 | $person = ['age' => 45, 'genre' => 'men']; |
使用 array_filter()
函数检索符合特定条件的项目
1 | $items = [ |
array_filter()
函数是一个以回调函数为参数的函数。对于数组中的每个项目,将计算一个表达式。如果表达式为真,则当前项目将包含在结果数组中。
在数组中搜索
1 | $items = [ |
array_search()
函数允许你根据搜索条件搜索特定键。在最后一个示例中,我们在“名称”列中查找“产品 3”的键
使用 array_map() 函数创建一个新数组
1 | $items = [ |
array_map()
函数返回一个数组,其中包含每个回调项将返回的内容。
array_map()
函数必须有两个参数:一个回调函数和一个数组。例如 array_map(回调函数,数组)
array_map()
函数循环遍历每个数组项,同时构建一个新数组。新数组中的每个项都是回调函数的结果(返回)。在最后一个示例中,每个循环都返回一个具有 id * 2 和产品名称的项。
原始表未修改,而是创建了一个新表。
array_reduce() 函数
此函数接受一个数组并将其简化为单个值。例如,返回将数组中包含的所有数字相加的结果。
1 | $numbers = [2, 4, 6, 100]; |
array_reduce()
函数接受两个参数:对实际项目的引用和总变量。对于每次迭代,回调函数都会在总变量中返回结果。
相关文章: