PHP:如何使用动态数组名获取多个数组的和

PHP:如何使用动态数组名获取多个数组的和,php,arrays,Php,Arrays,我有一个动态名称的数组。我的数组可以大于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

我有一个动态名称的数组。我的数组可以大于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);


    }
 }

这应该适合您:

$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();
$array0=数组(5,10,15,20,25,30);
$array1=数组(1,2,3,4,5,6);
$array2=数组(2,6,8,10,12,14);
$var_前缀='array';
$arr_count=0;
$max_字段=0;
while(isset(${$var_prefix.$arr_count})){
$data[]=${$var\u前缀。$arr\u计数};
if(count(${$var\u prefix.$arr\u count})>$max\u字段){
$max\u fields=count(${$var\u prefix.$arr\u count});
};
$arr_count++;
}

对于($i=0;$i这应该适用于您:

$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();
$array0=数组(5,10,15,20,25,30);
$array1=数组(1,2,3,4,5,6);
$array2=数组(2,6,8,10,12,14);
$var_前缀='array';
$arr_count=0;
$max_字段=0;
while(isset(${$var_prefix.$arr_count})){
$data[]=${$var\u前缀。$arr\u计数};
if(count(${$var\u prefix.$arr\u count})>$max\u字段){
$max\u fields=count(${$var\u prefix.$arr\u count});
};
$arr_count++;
}

对于($i=0;$i好吧,多数组是一种选择,但您仍然可以这样做:

$array = array(); // hungarian notation
$array[] = array(5, 10, 15, 20, 25, 30);
$array[] = array(1, 2, 3, 4, 5, 6);
$array[] = array(2, 6, 8, 10, 12, 14);
$loopThrice=3;
$getSum=0;
$total=array();
$array0=数组(5,10,15,20,25,30);
$array1=数组(1,2,3,4,5,6);
$array2=数组(2,6,8,10,12,14);
//找出哪一个arrray具有最多的值
对于($a=0;$a<$loopThrice;$a++){
$max_index=(count(${'array'.$a})>$max_index?count(${'array'.$a}):$max_index);
}
对于($i=0;$i<$max_index;$i++){
对于($a=0;$a<$loopThrice;$a++){
$total[$i]+=${'array'.$a}[$i];
}
}
印刷费(合计);
//打印数组([0]=>8[1]=>18[2]=>26[3]=>34[4]=>42[5]=>50)

好吧,多阵列是一种方式,但您仍然可以这样做:

$array = array(); // hungarian notation
$array[] = array(5, 10, 15, 20, 25, 30);
$array[] = array(1, 2, 3, 4, 5, 6);
$array[] = array(2, 6, 8, 10, 12, 14);
$loopThrice=3;
$getSum=0;
$total=array();
$array0=数组(5,10,15,20,25,30);
$array1=数组(1,2,3,4,5,6);
$array2=数组(2,6,8,10,12,14);
//找出哪一个arrray具有最多的值
对于($a=0;$a<$loopThrice;$a++){
$max_index=(count(${'array'.$a})>$max_index?count(${'array'.$a}):$max_index);
}
对于($i=0;$i<$max_index;$i++){
对于($a=0;$a<$loopThrice;$a++){
$total[$i]+=${'array'.$a}[$i];
}
}
印刷费(合计);
//打印数组([0]=>8[1]=>18[2]=>26[3]=>34[4]=>42[5]=>50)

为什么不使用多维数组

Array
(
[0] => Array
    (
        [0] => 5
        [1] => 10
        [2] => 15
        [3] => 20
        [4] => 25
        [5] => 30
    )

[1] => Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
        [3] => 4
        [4] => 5
        [5] => 6
    )

[2] => Array
    (
        [0] => 2
        [1] => 6
        [2] => 8
        [3] => 10
        [4] => 12
        [5] => 14
    )
)
在这种情况下,您将拥有一个数组:

$sumArray = array();
$arrayCount = count($array);
$elementCount = 0;

foreach($array as $subarray)
{
    $count = count($subarray);
    $elementCount = $elementCount < $count ? $count : $elementCount;
}

for($i = 0; $i < $elementCount; $i++)
{
    $sumArray[$i] = 0;

    for($j = 0; $j < $arrayCount; $j++)
    {
        $sumArray[$i] += $array[$j][$i];
    }
}

print_r($sumArray);
您可以使用嵌套的
for
循环:

Array
(
    [0] => 8
    [1] => 18
    [2] => 26
    [3] => 34
    [4] => 42
    [5] => 50
)
现在,如果您有一个不成比例的子数组(即每个子数组中的元素计数不同),您仍然会得到某种结果,因为缺少的元素将被假定为
0
。因此,输入:

Array
(
    [0] => 8
    [1] => 18
    [2] => 26
    [3] => 34
    [4] => 30
    [5] => 6
)
您仍然会得到以下结果:


为什么不使用多维数组

Array
(
[0] => Array
    (
        [0] => 5
        [1] => 10
        [2] => 15
        [3] => 20
        [4] => 25
        [5] => 30
    )

[1] => Array
    (
        [0] => 1
        [1] => 2
        [2] => 3
        [3] => 4
        [4] => 5
        [5] => 6
    )

[2] => Array
    (
        [0] => 2
        [1] => 6
        [2] => 8
        [3] => 10
        [4] => 12
        [5] => 14
    )
)
在这种情况下,您将拥有一个数组:

$sumArray = array();
$arrayCount = count($array);
$elementCount = 0;

foreach($array as $subarray)
{
    $count = count($subarray);
    $elementCount = $elementCount < $count ? $count : $elementCount;
}

for($i = 0; $i < $elementCount; $i++)
{
    $sumArray[$i] = 0;

    for($j = 0; $j < $arrayCount; $j++)
    {
        $sumArray[$i] += $array[$j][$i];
    }
}

print_r($sumArray);
您可以使用嵌套的
for
循环:

Array
(
    [0] => 8
    [1] => 18
    [2] => 26
    [3] => 34
    [4] => 42
    [5] => 50
)
现在,如果您有一个不成比例的子数组(即每个子数组中的元素计数不同),您仍然会得到某种结果,因为缺少的元素将被假定为
0
。因此,输入:

Array
(
    [0] => 8
    [1] => 18
    [2] => 26
    [3] => 34
    [4] => 30
    [5] => 6
)
您仍然会得到以下结果:


您可能想看一看:转置数组,然后可以使用foreach循环或
array\u map()对每个子数组调用
array\u sum()
你应该把数组放在一个多维数组中,这样做会容易得多,而且你不会被限制在固定数量的子数组中。@jeroen谢谢,这是一个伟大的想法,到目前为止,我只能做一维,我不知道它在多维中是可能的。所以我认为我的问题是错误的,我也这么认为:-)您可能想看一看:转置数组,然后可以使用foreach循环或
array\u map()对每个子数组调用
array\u sum()
你应该把数组放在一个多维数组中,这样做会容易得多,而且你不会被限制在固定数量的子数组中。@jeroen谢谢,这是一个伟大的想法,到目前为止,我只能做一维,我不知道它在多维中是可能的。所以我认为我的问题是错误的,我也这么认为:-)您可以在子数组中循环并获取最大元素。就像我在回答中提出的那样。较少限制。@iliaz我知道,我不确定是否要包含另一个循环…@iliaz让我们按照你的建议(编辑答案)@Nordenheim,谢谢,iliaz答案也是相同的输出,但我更喜欢这个,因为我想学习多维数组。非常清晰且易于理解。您可以在子阵列中循环并获得最大元素。就像我在回答中提出的那样。较少限制。@iliaz我知道,我不确定是否要包含另一个循环…@iliaz让我们按照你的建议(编辑答案)@Nordenheim,谢谢,iliaz答案也是相同的输出,但我更喜欢这个,因为我想学习多维数组。非常清晰,容易理解