编程

array_* - 部分 PHP 数组操作函数

1052 2023-04-22 15:15:00

array_sum

(PHP 4 >= 4.0.4, PHP 5, PHP 7, PHP 8)

array_sum — 对数组中所有值求和

说明

array_sum(array $array): int|float

array_sum() 将数组中的所有值相加,并返回结果。

参数

array

输入的数组。

返回值

所有值的和以整数或浮点数的结果返回,array 为空时则返回 0。

范例

<?php
$a = array(2, 4, 6, 8);
echo "sum(a) = " . array_sum($a) . "\n";

$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4);
echo "sum(b) = " . array_sum($b) . "\n";
?>

以上例程会输出:

sum(a) = 20
sum(b) = 6.9

array_product

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

array_product — 计算数组中所有值的乘积

说明

array_product(array $array): int|float

array_product() 以整数或浮点数返回一个数组中所有值的乘积。

参数

array

这个数组。

返回值

以整数或浮点数返回一个数组中所有值的乘积。

范例

<?php

$a = array(2, 4, 6, 8);
echo "product(a) = " . array_product($a) . "\n";
echo "product(array()) = " . array_product(array()) . "\n";

?>

以上例程会输出:

product(a) = 384
product(array()) = 1

array_intersect

(PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8)

array_intersect — 计算数组的交集

说明

array_intersect(array $array, array ...$arrays): array

array_intersect() 返回一个数组,该数组包含了所有在 array 和其它参数数组中同时存在的值。注意,键名保留不变。

参数

array

要检查的数组,作为主值。

arrays

要被对比的数组。

返回值

返回一个数组,该数组包含了所有在 array 和其它参数数组中同时存在的值。

更新日志

版本说明
8.0.0现在可以仅使用一个参数调用此函数。以前,至少需要两个参数。

范例

<?php
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$result = array_intersect($array1, $array2);
print_r($result);
?>

以上例程会输出:

Array
(
    [a] => green
    [0] => red
)

注释

注意: 两个单元仅在 (string) $elem1 === (string) $elem2 时被认为是相同的。也就是说:当字符串的表达形式相同时。

array_search

(PHP 4 >= 4.0.5, PHP 5, PHP 7, PHP 8)

array_search — 在数组中搜索给定的值,如果成功则返回首个相应的键名

说明

array_search(mixed $needle, array $haystack, bool $strict = false): int|string|false

在 haystack 中搜索 needle。

参数

needle

搜索的值。

注意:

如果 needle 是字符串,则比较以区分大小写的方式进行。

haystack

这个数组。

strict

如果可选的第三个参数 strict 为 true,则 array_search() 将在 haystack 中检查完全相同的元素。 这意味着同样严格比较 haystack 里 needle 的 类型,并且对象需是同一个实例。

返回值

如果找到了 needle 则返回它的键,否则返回 false

如果 needle 在 haystack 中出现不止一次,则返回第一个匹配的键。要返回所有匹配值的键,应该用 array_keys() 加上可选参数 search_value 来代替。

警告

此函数可能返回布尔值 false,但也可能返回等同于 false 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

范例

<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');

$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array); // $key = 1;
?>

array_flip

(PHP 4, PHP 5, PHP 7, PHP 8)

array_flip — 交换数组中的键和值

说明

array_flip(array $array): array

array_flip() 返回一个反转后的 array,例如 array 中的键名变成了值,而 array 中的值成了键名。

注意 array 中的值需要能够作为合法的键名(例如需要是 int 或者 string)。如果类型不对,将出现一个警告,并且有问题的键/值对将不会出现在结果里

如果同一个值出现多次,则最后一个键名将作为它的值,其它键会被丢弃。

参数

array

要交换键/值对的数组。

返回值

返回交换后的数组。

范例

示例 #1 array_flip() 例子

<?php
$input = array("oranges", "apples", "pears");
$flipped = array_flip($input);

print_r($flipped);
?>

以上例程会输出:

Array
(
    [oranges] => 0
    [apples] => 1
    [pears] => 2
)

示例 #2 array_flip() 例子 : 冲突

<?php
$input = array("a" => 1, "b" => 1, "c" => 2);
$flipped = array_flip($input);

print_r($flipped);
?>

以上例程会输出:

Array
(
    [1] => b
    [2] => c
)

array_combine

(PHP 5, PHP 7, PHP 8)

array_combine — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值

说明

array_combine(array $keys, array $values): array

返回一个 array,用来自 keys 数组的值作为键名,来自 values 数组的值作为相应的值。

参数

keys

将被作为新数组的键。非法的值将会被转换为字符串类型(string)。

values

将被作为 Array 的值。

返回值

返回合并后的 array。

错误/异常

自 PHP 8.0.0 起,如果 keys 和 values 的元素数量不同,将会抛出 ValueError。在 PHP 8.0.0 之前,会引发 E_WARNING

更新日志

版本说明
8.0.0如果每个数组的元素数量不相等,现在 array_combine() 将会抛出 ValueError,之前此方法返回 false

范例

示例 #1 一个 array_combine() 简单的例子

<?php
$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c = array_combine($a, $b);

print_r($c);
?>

以上例程会输出:

Array
(
    [green]  => avocado
    [red]    => apple
    [yellow] => banana
)
PHP