2016-01-08 85 views
2

我很努力地創建一個代碼,可以幫助我從下面的php數組創建一個表。數組名稱是$associative_array1PHP數組到HTML表

array(
'Objective' => array(0 => 'Conversions', 1 => 'Lead Generation',), 
'Gender' => array(0 => 'Male (17.99% cheaper)', 
        1 => 'Male (6.46% cheaper) Male (16% cheaper)',), 
'Age' => array(0 => '45-54 (17.99% cheaper)', 
       1 => '45-54 (6.46% cheaper)35-44 (16% cheaper)',), 
'Placement' => array(0 => 'Mobile Feed (30.8% cheaper) right_hand (46.81% cheaper)', 
        1 => 'Mobile Feed (12.56% cheaper)',), 
'Device' => array(0 => 'Android (30.8% cheaper) Desktop (46.81% cheaper)', 
        1 => 'iPhone (12.56% cheaper)',), 
) 

預期輸出:enter image description here

可以採取

標題爲恆定。

我試着創建代碼,但是那太糟糕了,所以不值得在這裏分享。基本上,代碼什麼都沒做。對不起,我很喜歡它,需要同事的幫助。

PHP代碼

function generateTable2($associative_array,$associative_array1){ 
    echo '<table width="620" class="optimization_table" border="1" cellspacing="0" cellpadding="0"><thead><tr><th colspan=2>'; 
    echo implode('</th><th colspan=2>', array_keys(current($associative_array))); 
    echo '</th></tr></thead><tbody>'; 
    foreach ($associative_array1 as $row=>$value){ 
    echo "<td>"; 
    if(is_array($value)) 
     foreach ($value as $key =>$value2) { 
      print_r($value2[$key]); 
      foreach ($value2 as $value3) { 

      } 

      # code... 
     } 

    } 
    echo '</tbody></table>'; 
    } 
+0

可你做你的PHP數組中的'var_export',這將是我們更容易幫助你,然後 - http://php.net/var_export然後用該數組編輯您的帖子,而不是您最初發布的內容。 – Clay

+0

當然。讓我這樣做 – user4943236

+0

這可以作爲常量..我實際上是從其他數組導入..如果你看看生成表,它有兩個數組作爲參數傳遞。一個數組用於創建表名,另一個用於數據。我不介意,如果我對它們進行了嚴格編碼 – user4943236

回答

1

的數據是在一個不尋常的格式。通常情況下,您希望數據已經以行狀格式存在。

這裏是我想出了:

<?php   
$data = array ( 
    'Objective' => array (0 => 'Conversions', 1 => 'Lead Generation',), 
    'Gender' => array (0 => 'Male (17.99% cheaper)', 1 => 'Male (6.46% cheaper) Male (16% cheaper)',), 
    'Age' => array (0 => '45-54 (17.99% cheaper)', 1 => '45-54 (6.46% cheaper)35-44 (16% cheaper)',), 
    'Placement' => array (0 => 'Mobile Feed (30.8% cheaper) right_hand (46.81% cheaper)', 1 => 'Mobile Feed (12.56% cheaper)',), 
    'Device' => array (0 => 'Android (30.8% cheaper) Desktop (46.81% cheaper)', 1 => 'iPhone (12.56% cheaper)',), 
); 

function generateTable2($associative_array,$associative_array1){ 
    echo '<table width="620" class="optimization_table" border="1" cellspacing="0" cellpadding="0"><thead><tr><th colspan=1>'; 
    echo implode('</th><th colspan=2>',$associative_array); 
    echo '</th></tr></thead><tbody>'; 

    $rowCount = count(current($associative_array1)); 
    for ($x=0; $x<$rowCount; $x++) { 
     echo "<tr>"; 
     foreach ($associative_array1 as $key => $data){ 
      echo "<td>".$data[ $x ]."</td>"; 
     } 
     echo "</tr>\n"; 
    } 

    echo '</tbody></table>'; 
} 

generateTable2(['Objective', 'Top Performing Targeting Group', 'Top Performing Placement'], $data); 
+0

讓我檢查這個。我明白,數據是不尋常的格式,但這是最好的可以發送數據。其他數組非常糟糕,以至於需要這麼多嵌套數組來創建html。 – user4943236

+0

這不起作用,而且,只有5行正在打印 – user4943236

+0

只是打印出來的「5行」? – Clay

2

不能使用嵌套循環foreach這樣的,因爲你的HTML表從PHP陣列的方向轉動。每行包含所有子數組的相同索引,因此您需要執行類似這樣的操作來顯示錶的數據行。

$keys = array_keys($associative_array1); 
$count = count($associative_array1[$keys[0]]); 
for ($i = 0; $i < $count; $i++) { 
    echo "<tr>"; 
    foreach ($keys as $key) { 
     echo "<td>" . nl2br($associative_array1[$key][$i]) . "</td>"; 
    } 
    echo "</tr>"; 
} 

DEMO

+0

其說undefined偏移量。此外,它在一列1.error下創建多行是在這條線'echo「​​」。 nl2br($ associative_array1 [$ key] [$ i])。 「」;' – user4943236

+0

對我來說沒有錯誤,請參閱演示。 – Barmar

+0

我不知道我在做什麼錯。它說'注意:未定義偏移:0','注意:未定義偏移:1'直到''注意:未定義偏移:4' – user4943236