这可能是一个愚蠢的问题,所以如果是的话,请对我宽容一点。
我有一系列返回多维数组的查询(MySQL)。
然后,我使用这些数组项在foreach循环中的字符串中填充变量。
然后,我需要这个字符串来填充一个javascript图,这样数据的格式就需要完美。这个想法适用于1个多维数组。
然而。要绘制多个图形(例如比较折线图),我需要在同一行中表达所有数据。
所以,如果可能的话,我需要做的是合并数组的各行,而不是将其添加到末尾。
我给你看我的作品:
foreach ($graph_month as $month) :
$first .= ' { year: "'.$month['month'].'",';
endforeach;
foreach ($graph_data1 as $data) :
$second1 .= ' "'.$data['title'].'": '.$data['totalValue'].' ';
endforeach;
foreach ($graph_data2 as $data) :
$second2 .= ' "'.$data['title'].'": '.$data['totalValue'].' ';
endforeach;
foreach ($graph_data3 as $data) :
$second3 .= ' "'.$data['title'].'": '.$data['totalValue'].' ';
endforeach;
foreach ($graph_data4 as $data) :
$second4 .= ' "'.$data['title'].'": '.$data['totalValue'].' ';
endforeach;
foreach ($graph_data5 as $data) :
$second5 .= ' "'.$data['title'].'": '.$data['totalValue'].' ';
endforeach;
因此,每个foreach都填充了所需javascript的一小部分,但我需要能够将所有这些行连接在一起。
例如
能够产生的foreach
$first.$second1.$second2.$second3.$second4.$second5
这可能吗?是否可能将[i]和[i++]添加到每个变量中。
首先,您可以通过生成以下变量来消除额外的foreach
行:
foreach ($graph_month as $month):
for ($i = 1; $i <=5; $i++) {
//$graph_data$i becomes $graph_data1, then $graph_data2 etc.
foreach ($graph_data$i as $data) :
$variable .= ' "'.$data['title'].'": '.$data['totalValue'].' ';
endforeach;
}
// and so on
endforeach;
正如您所要求的,这个脚本的结果是这样的:
{year: month, title: value title: value
我们可以这样调整一下:
foreach ($graph_month as $month):
$variable .= ' { year: "'.$month['month'].'",';
for ($i = 1; $i <=5; $i++) {
//$graph_data$i becomes $graph_data1, then $graph_data2 etc.
foreach ($graph_data$i as $data) :
$variable .= ' "'.$data['title'].'": '.$data['totalValue'].' ';
if ($i != 5) {
$variable .= ", ";
}
endforeach;
}
$variable .=
// and so on
endforeach;
它变成了:
{ year: month, 'title': 'value', 'title': 'value', ... }
您可以放置相同的变量:
foreach ($graph_month as $month) {
$variable .= ' { year: "'.$month['month'].'",';
}
foreach ($graph_data1 as $data) {
$variable .= ' "'.$data['title'].'": '.$data['totalValue'].' ';
}
foreach ($graph_data2 as $data) {
$variable .= ' "'.$data['title'].'": '.$data['totalValue'].' ';
}
// and so on
它们将在每个循环上连接。
您可以像这样使用for循环。。。
<?php
for($i=0;$i<count($graph_month);$i++)
{
$all_values1 = $graph_data1[$i]['title'] . $graph_data1[$i]['totalValue'];
$all_values2 = $graph_data2[$i]['title'] . $graph_data2[$i]['totalValue'];
$all_values3 = $graph_data3[$i]['title'] . $graph_data3[$i]['totalValue'];
$all_values4 = $graph_data4[$i]['title'] . $graph_data4[$i]['totalValue'];
$all_values5 = $graph_data5[$i]['title'] . $graph_data5[$i]['totalValue'];
}
?>
循环不需要运行太多may。这将需要一些额外的时间来执行。。。
试着这样。。。。
使用空字符串
$string = '';
然后将此变量用于每个for循环
foreach($array1 as $value){
$string.= $value['some_data'];
}
foreach($array2 as $value){
$string.= $value['some_data'];
}
使用此$string作为最终结果
让PHP担心JSON格式,只需正确构建对象。
<?php
$tojson = array(
0 => array(),
1 => array(),
2 => array(),
3 => array(),
4 => array(),
5 => array()
);
foreach($graph_month as $month)
$tojson[0]['year'] = $month['month'];
foreach($graph_data1 as $data)
$tojson[1][$data['title']] = $data['totalValue'];
foreach($graph_data2 as $data)
$tojson[2][$data['title']] = $data['totalValue'];
foreach($graph_data3 as $data)
$tojson[3][$data['title']] = $data['totalValue'];
foreach($graph_data4 as $data)
$tojson[4][$data['title']] = $data['totalValue'];
foreach($graph_data5 as $data)
$tojson[5][$data['title']] = $data['totalValue'];
$json = json_encode($tojson);
?>