我有两个PHP循环如下:
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
答案 0 :(得分:1)
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|
答案 1 :(得分:0)
为了更好的可读性而细分,这会将它们加到$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,'|');
答案 2 :(得分:0)
如果每个索引在数组中对应
$rezult = array();
for($i=0;$i<count($directData);$i++){
$rezult[] = $directData[$i] + $sdata[$i];
}
echo join("|",$rezult);
答案 3 :(得分:0)
以简单的方式,您可以这样做:
$finalData = array_map(function () {
return array_sum(func_get_args());
}, $directData, $sdata );
print_r($finalData );
答案 4 :(得分:0)
这是一个使用所有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
答案 5 :(得分:-1)
这是我的方法,我希望它适合你。
$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++;
}