连接数组行php

时间:2012-09-06 14:10:43

标签: php multidimensional-array

这可能是一个愚蠢的问题,所以如果是这样,请放轻松。

我有一系列查询(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的一小部分,但是我需要能够在彼此的右边连接所有这些行。

e.g

可以产生的foreach

$first.$second1.$second2.$second3.$second4.$second5

这是否可行,是否可以将[i]和[i ++]添加到每个变量。

5 个答案:

答案 0 :(得分:2)

首先,您可以通过生成如下变量来消除额外的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', ... }

答案 1 :(得分:1)

您可以输入相同的变量:

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

它们将在每个循环中连接。

答案 2 :(得分:0)

您可以像这样使用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'];
}

&GT;

无需循环运行。这需要一些额外的时间来执行......

试试这样....

答案 3 :(得分:0)

使用空字符串

$string = '';

然后在每个for循环中使用此变量

foreach($array1 as $value){
$string.= $value['some_data'];
}

foreach($array2 as $value){
$string.= $value['some_data'];
}

使用此$ string作为最终结果

答案 4 :(得分:0)

让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);

?>