PHP - 在foreach循环中使用多个值

时间:2015-09-06 10:31:13

标签: php loops foreach

我有两个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

6 个答案:

答案 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++;
}
相关问题