📅  最后修改于: 2023-12-03 14:45:23.959000             🧑  作者: Mango
在 PHP 中,我们经常需要操作关联数组,常常需要折叠(或压缩)其中的一些列,以便更方便地进行计算或其他操作。
下面是几种常用的折叠数组列的方法。
如果我们只需要数组的值,并且它们都是数字类型,我们可以使用 PHP 内置函数 array_sum()
来获得它们的和。例如:
$values = array(1, 2, 3, 4, 5);
$sum = array_sum($values);
echo "The sum of the array values is: " . $sum . "\n";
输出:
The sum of the array values is: 15
如果数组中不全是数字类型的值,我们可以使用一个匿名函数来过滤它们。例如,假设我们的数组中有一些字符串值,我们只需要保留其中的数字:
$values = array(1, 2, 'three', 4, 'five');
$filtered_values = array_filter($values, function($value) {
return is_numeric($value);
});
$sum = array_sum($filtered_values);
echo "The sum of the array values is: " . $sum . "\n";
输出:
The sum of the array values is: 7
有时候我们需要把一个关联数组的键折叠成一个字符串。例如,假设我们有一个包含学生姓名和成绩的数组,我们希望把姓名和成绩合并为一个以冒号分隔的字符串:
$students = array(
'Alice' => 95,
'Bob' => 83,
'Charlie' => 77,
'David' => 88,
);
$string = implode(':', array_keys($students)) . ':' . implode(':', array_values($students));
echo "String: " . $string . "\n";
输出:
String: Alice:Bob:Charlie:David:95:83:77:88
如果我们只需要数组中的一部分值,并且它们满足某个条件,我们可以使用 array_filter()
函数来筛选。例如,假设我们有一个数组来表示每个人的收入,我们只需要统计其中高于平均收入的人数:
$incomes = array(10000, 20000, 15000, 18000, 12000, 9000);
$average = array_sum($incomes) / count($incomes);
$count = count(array_filter($incomes, function($income) use ($average) {
return $income > $average;
}));
echo "Count: " . $count . "\n";
输出:
Count: 3
折叠关联数组中的常用列是 PHP 程序员经常需要面对的任务之一,这里介绍了几种常见的方法,供大家参考。