连接数组行php


Concatenating array rows php

这可能是一个愚蠢的问题,所以如果是的话,请对我宽容一点。

我有一系列返回多维数组的查询(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);
?>