2012-09-06 84 views
0

這可能是一個愚蠢的問題,所以如果是這樣的話,請儘量輕鬆。連接陣列行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的一個小部分,但我需要能夠來連接對方的右邊所有這些行。

e.g

一個foreach能夠產生:

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

這是可能的,這將是可能添加[i]和[I ++]到每個變量。

+0

是預期的最終結果JSON? – iambriansreed

回答

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

你可以把同一個變量:

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 

他們將串連在每個循環。

0

您可以使用像這樣循環......

<?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']; 
} 

?>

無需運行循環也可能。這將需要一些額外的時間來執行...

嘗試像這樣....

0

使用空字符串

$string = ''; 

然後使用這個變量與每一個for循環

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

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

使用此$字符串作爲最終結果

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

?>