PHP - 使用多个值foreach循环
问题描述:
我有两个PHP循环如下:PHP - 使用多个值foreach循环
foreach ($directData as $key => $val) {
echo $val;
echo "|"; //Just for the visual.
}
foreach ($sdata as $key => $val) {
echo $val;
echo "|"; //Just for the visual.
}
哪个输出:
5|5|5|10|10|10|0|
和第二:2|2|2|5|5|5|20|
我的问题是,如何能我将这两个结果结合起来(添加它们)并像上面那样打印出来?
所以,这将是:
7|7|7|15|15|15|20
答
php > $a = [1, 2, 3];
php > $b = [4, 5, 6];
php > $c = array_map(function($x, $y){ return $x + $y; }, $a, $b);
php > print_r($c);
Array
(
[0] => 5
[1] => 7
[2] => 9
)
php > print_r(implode($c, '|') . '|');
5|7|9|
答
细分各种更好的可读性,这将总结他们到$new
阵列。
array_map
将遍历给定的数组,并将回调函数应用于两个数组的当前索引处。回调函数将对当前索引的值进行求和。
$new=array_map(
function(){
return array_sum(func_get_args());
},
$directData, $sdata
);
$out= '';
foreach ($new as $key => $val)
$out .= $val.'|';
echo rtrim($out,'|');
答
如果每个指标在阵列
答
这里是我的方法,我希望它为你的作品相对应。
$i=0;
$directData=array(5,5,5,10,10,10,0);
$sdata = array(2,2,2,5,5,5,20);
foreach ($directData as $key => $val) {
$j=0;
foreach ($sdata as $key => $val1) {
if($i==$j){
$value = $val+$val1;
echo $value;
echo "|"; //Just for the visual.
break;
}
$j++;
}
$i++;
}
如果两个数组的键是一样那么我们甚至可以进一步自定义它:
$i=0;
$directData=array(5,5,5,10,10,10,0);
$sdata = array(2,2,2,5,5,5,20);
foreach ($directData as $key => $val) {//this is just for the looping count
$value = $directData[$i] + $sdata[$i];
echo $value;
echo "|"; //Just for the visual.
$i++;
}
答
以简单的方式
,你可以不喜欢它:
$finalData = array_map(function() {
return array_sum(func_get_args());
}, $directData, $sdata);
print_r($finalData);
答
这里一种使用所有PHP数组所具有的迭代器的方法。
/**
* Use the iterator that all PHP arrays have.
*
* Check both arrays for having entries.
*/
$listOut = array(); // output in here
while (current($listA) !== false && current($listB) !== false) {
$listOut[] = current($listA) + current($listB);
next($listA);
next($listB);
}
输入:
$listA = array(5, 5, 5, 10, 10, 10, 0);
$listB = array(2, 2, 2, 5, 5, 5, 20,);
输出
Array
(
[0] => 7
[1] => 7
[2] => 7
[3] => 15
[4] => 15
[5] => 15
[6] => 20
)
7| 7| 7| 15| 15| 15| 20
+0
为完整处理数组的方式而添加。 –
做阵列具有相同的钥匙? – splash58