PHP:如何使用动态数组名获取多个数组的和
我有一个动态名称的数组。我的数组可以大于3,并且数组变量应该是唯一的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
$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答案也是相同的输出,但我更喜欢这个,因为我想学习多维数组。非常清晰,容易理解