如何计算数组项的总值
How to calculate the total values of array items
我正在尝试获取计算每个项目的第 4 部分的总量,但是 array_sum 无法使用我的代码,当我回显 $parts 时,我只得到一个数字,即 4 .. 这是我的代码:
$test = "2021/05/10,0,0,0,1|2021/05/11,0,0,0,2|2021/05/0,0,0,0,3|2021/05/13,0,0,0,4";
$test = explode("|", $test);
foreach($test as $key => $value){
$parts = explode(",", $test[$key])[4];
}
echo array_sum($parts);
你的问题是 $parts
是一个字符串并且每次迭代都会被覆盖,所以将它附加到一个数组中:
$parts[] = explode(",", $test[$key])[4];
但为了好玩:
preg_match_all('/,(\d+)(\||$)/', $test, $matches);
echo array_sum($matches[1]);
- 匹配一个
,
,然后在第1组()
中匹配并捕获任意数量的数字\d+
,后跟|
或字符串结尾$
在dates
数组上使用array_map(callback, array)
,由|
展开。并通过 ,
再次分解它,只为每个 date
获取位于 4.
位置的最后一部分
$dates = "2021/05/10,0,0,0,1|2021/05/11,0,0,0,2|
2021/05/0,0,0,0,3|2021/05/13,0,0,0,4";
$parts = array_map(fn($part)=>explode(",", $part)[4], explode("|", $dates));
echo "<pre>";
print_r($parts);
打印:
/*
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
*/
这些部分的总和:
echo array_sum($parts); //10
我正在尝试获取计算每个项目的第 4 部分的总量,但是 array_sum 无法使用我的代码,当我回显 $parts 时,我只得到一个数字,即 4 .. 这是我的代码:
$test = "2021/05/10,0,0,0,1|2021/05/11,0,0,0,2|2021/05/0,0,0,0,3|2021/05/13,0,0,0,4";
$test = explode("|", $test);
foreach($test as $key => $value){
$parts = explode(",", $test[$key])[4];
}
echo array_sum($parts);
你的问题是 $parts
是一个字符串并且每次迭代都会被覆盖,所以将它附加到一个数组中:
$parts[] = explode(",", $test[$key])[4];
但为了好玩:
preg_match_all('/,(\d+)(\||$)/', $test, $matches);
echo array_sum($matches[1]);
- 匹配一个
,
,然后在第1组()
中匹配并捕获任意数量的数字\d+
,后跟|
或字符串结尾$
在dates
数组上使用array_map(callback, array)
,由|
展开。并通过 ,
再次分解它,只为每个 date
获取位于 4.
$dates = "2021/05/10,0,0,0,1|2021/05/11,0,0,0,2|
2021/05/0,0,0,0,3|2021/05/13,0,0,0,4";
$parts = array_map(fn($part)=>explode(",", $part)[4], explode("|", $dates));
echo "<pre>";
print_r($parts);
打印:
/*
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
)
*/
这些部分的总和:
echo array_sum($parts); //10