到目前为止,我有三个数组,它们从数据库中返回值,如下所示(经过多次格式化)
[0]=>array(
[0]=>'Apr', [1]=> 1),
[1]=>array(
[0]=>'May', [1]=>2),
[2]=>array(
[0]=>'Jun', [1]=>23)
具有相似值的第二个数组:
[0]=>array(
[0]=>'Mar', [1]=>22),
[1]=>array(
[0]=>'Apr', [1]=> 1),
[2]=>array(
[0]=>'May', [1]=>2),
[3]=>array(
[0]=>'Jun', [1]=>25)
第三个:
[0]=>array(
[0]=>'Jan', [1]=>50),
[1]=>array(
[0]=>'Feb', [1]=> 20),
[2]=>array(
[0]=>'Mar', [1]=>16),
[3]=>array(
[0]=>'Jun', [1]=>5)
这就是我试图让他们成为的方式
[0]=>array(
[0]=>'Month', [1]=>'Calc1', [2]=>'Calc2', [3]=>'Calc3'),
[1]=>array(
[0]=>'Jan', [1]=>0, [2]=>0, [3]=>50),
[2]=>array(
[0]=>'Feb', [1]=>0, [2]=>0, [3]=>20),
[3]=>array(
[0]=>'Mar', [1]=>0, [2]=>22, [3]=>16),
[4]=>array(
[0]=>'Apr', [1]=>1, [2]=>1, [3]=>0),
[5]=>array(
[0]=>'May', [1]=>2, [2]=>2, [3]=>0),
[6]=>array(
[0]=>'Jun', [1]=>23, [2]=>25, [3]=>5)
请注意"0"是如何在不包含值的地方填充的。老实说,这是我遇到过的最复杂的数组问题,原因是遍历数组很困难。我特别需要数组是这样的结构,因为我需要把它发送到谷歌可视化区域图。
如果你发现这个问题的任何建议,请发表。
提前非常感谢:)
@DevZer0:这是我(用我的真实数据)得到的输出。请注意月份是如何重复的:
array(
[0] =>
array(
[0] =>'Month'
[1] =>'Calc1'
[2] =>'Calc2'
[3] =>'Calc3'
)
[1] =>
array(
[0] =>'Apr'
[1] =>1
[2] =>0
[3] =>0
)
[2] =>
array(
[0] =>'Jun'
[1] =>9
[2] =>0
[3] =>0
)
[3] =>
array(
[0] =>'Apr'
[1] =>0
[2] =>1
[3] =>0
)
[4] =>
array(
[0] =>'May'
[1] =>0
[2] =>2
[3] =>0
)
[5] =>
array(
[0] =>'Jun'
[1] =>0
[2] =>23
[3] =>0
)
[6] =>
array(
[0] =>'Apr'
[1] =>0
[2] =>0
[3] =>1
)
[7] =>
array(
[0] =>'May'
[1] =>0
[2] =>0
[3] =>3
)
[8] =>
array(
[0] =>'Jun'
[1] =>0
[2] =>0
[3] =>27
)
)
我希望它们以这种格式连接:
array(
[0] =>
array(
[0] =>'Month'
[1] =>'Calc1'
[2] =>'Calc2'
[3] =>'Calc3'
)
[1] =>
array(
[0] =>'Apr'
[1] =>1
[2] =>1
[3] =>1
)
[2] =>
array(
[0] =>'May'
[1] =>0
[2] =>2
[3] =>3
)
[3] =>
array(
[0] =>'Jun'
[1] =>9
[2] =>23
[3] =>27
)
)
有办法做到吗?再次感谢您:)
这不是一个难题,如果我理解正确的话,你有一个包含月份和整数的数组。假设您有三个阵列,分别称为$array1
、$array2
和$array3
$arrays = array($array1, $array2, $array3);
$final = array();
$index = 1;
foreach ($arrays as $array) {
foreach ($array as $ar) {
if (!isset($final[$ar[0]])) {
$final[$ar[0]] = array($ar[0], $index => $ar[1]);
} else {
$final[$ar[0]][$index] = $ar[1];
}
}
$index++;
}
$final = array_values($final);
for($x=0; $x < count($final); $x++) {
for($i=1; $i < 4; $i++) {
if (!isset($final[$x][$i])) $final[$x][$i] = "0";
}
}
$header = array("Month", "Calc1", "Calc2", "Calc3");
array_unshift($final, $header);
var_dump($final); //will have your resulting array