0

動的な名前の配列があります。私の配列は3つ以上になる可能性があり、依存し、配列変数は一意でなければなりません

$loopThrice = 3;
$getSum = 0;
$total = array();

$array0 = array(5, 10, 15, 20, 25, 30);
$array1 = array(1, 2, 3, 4, 5, 6);
$array2 = array(2, 6, 8, 10, 12, 14);

for($a=0; $a < $loopThrice; $a++){ // loop 3x to get unique array name
    foreach (${'array'.$a} as $key => $value) { // $array0, $array1, $array2,  
        //Right here is my problem, I'm not sure if this the correct way to get the sum of $array0,1,2
        
        //get the sum of array0,1,2 -- newarray(8, 18, 26, 34, 42, 50)
        $getSum += 
            //store newarray
            array_push($total, $getSum);     
    }
}

次のような出力を取得する必要があります。

Array ( 
    [0] => 8
    [1] => 18 
    [2] => 26 
    [3] => 34 
    [4] => 43 
    [5] => 50 
)
4

4 に答える 4

2

まあ、マルチ配列は行くべき道ですが、あなたはまだこの方法でそれを行うことができます:

 $loopThrice = 3;
 $getSum = 0;
 $total = array();

 $array0 = array(5, 10, 15, 20, 25, 30);
 $array1 = array(1, 2, 3, 4, 5, 6);
 $array2 = array(2, 6, 8, 10, 12, 14);
 // find which arrray has the most values
 for($a=0; $a < $loopThrice; $a++){
     $max_index = (count(${'array'.$a}) > $max_index ? count(${'array'.$a}) : $max_index);
 }

 for($i=0; $i < $max_index; $i++){
      for($a=0; $a < $loopThrice; $a++){
           $total[$i] += ${'array'.$a}[$i];
     }
 }

 print_r($total);
 // prints Array ( [0] => 8 [1] => 18 [2] => 26 [3] => 34 [4] => 42 [5] => 50 ) 
于 2016-09-14T14:29:01.887 に答える
1

これはあなたのために働くはずです:

$array0 = array(5, 10, 15, 20, 25, 30);
$array1 = array(1, 2, 3, 4, 5, 6);
$array2 = array(2, 6, 8, 10, 12, 14);

$var_prefix = 'array';
$arr_count = 0;
$max_fields = 0;

while(isset(${$var_prefix.$arr_count})) {
    $data[] = ${$var_prefix.$arr_count};
    if(count(${$var_prefix.$arr_count})>$max_fields) {
        $max_fields = count(${$var_prefix.$arr_count});
    };

    $arr_count++;
}

for($i=0; $i<$max_fields; $i++) {
    $result[$i] = array_sum(array_column($data, $i));
}

echo '<pre>';
print_r($result);
echo '</pre>';
die();
于 2016-09-14T14:20:29.167 に答える