簡體   English   中英

PHP多維數組到html表

[英]PHP multidimensional array to html table

我有一個多維數組,試圖將它輸出為表格,這是我的數組;

$marksarray=     
array(3) {
      [0]=>
      array(2) {
        [0]=>
        string(1) "8"
        [1]=>
        string(1) "0"
      }
      [1]=>
      array(2) {
        [0]=>
        string(1) "9"
        [1]=>
        string(1) "1"
      }
      [2]=>
      array(2) {
        [0]=>
        string(2) "13"
        [1]=>
        string(1) "2"
      }
    }

到目前為止,我的代碼是這樣的;

echo "<table><tr><td>Question</td><td>Rating</td></tr>";
     foreach ($marksarray as $mks){
         foreach ($mks as $qid=>$rate){
            echo "<tr><td>".$qid."</td><td>".$rate."</td></tr>";
          }
    }
echo "</table></div>";

但是我的輸出是 在此處輸入圖片說明

我做錯了什么?

你有太多foreach正在進行。 嘗試以下方法:

echo "<table><tr><td>Question</td><td>Rating</td></tr>";
     foreach ($marksarray as $mks){
        echo "<tr><td>".$mks[0]."</td><td>".$mks[1]."</td></tr>";
    }
echo "</table></div>";

編輯

供以后參考,如果您使用帶有有意義鍵的關聯數組的數組,它將使您的代碼更容易理解。 例如

$marksarray = array(
    array('qid' => 8, 'rating' => 0), 
    array('qid' => 9, 'rating' => 1), 
    array('qid' => 13, 'rating' => 2)
);

然后,您的循環將如下所示:

foreach ($marksarray as $mark){
    echo "<tr><td>".$mark['qid']."</td><td>".$mark['rating']."</td></tr>";
}

更好的是,您應該使用MVC(模型,視圖,控制器)並將此數據傳遞到視圖中……但這完全是另一個主題。

當您echo數組時,您將輸出key而不是實際值。 因此,為什么在第一欄中輸入“ 0”和“ 1”。

如果您卡在當前的數組布局中,則需要以下代碼:

echo "<table><tr><td>Question</td><td>Rating</td></tr>";
     foreach ($marksarray as $mks){
        echo "<tr><td>".$mks[0]."</td><td>".$mks[1]."</td></tr>";
     }
echo "</table></div>";

...,以便您利用鍵值提取要顯示的匹配值。

如果您不拘泥於現在的數組結構,則必須像這樣構造數組,以利用keypair值:

$marksarray = array(
    "8" => 0,
    "9" => 1,
    "13" => 2,
);

並使用代碼:

echo "<table><tr><td>Question</td><td>Rating</td></tr>";
     foreach ($marksarray as $qid => $rate){

        echo "<tr><td>".$qid."</td><td>".$rate."</td></tr>";

     }
echo "</table></div>";

...這樣一來,您可以清楚地引用代碼中的keypair值。

將回聲線更改為

   echo "<tr><td>".$rate[0]."</td><td>".$rate[1]."</td></tr>";

工作正常嗎?

這是正確輸出,並且您的循環看起來很好。 我認為您打算在陣列中執行的操作類似於:

$marksarray = array(
    "8" => "0",
    "9" => "1",
    "13" => "2"
);

然后將循環更改為:

echo "<table><tr><td>Question</td><td>Rating</td></tr>";
         foreach ($marksarray as $qid=>$rate){
            echo "<tr><td>".$qid."</td><td>".$rate."</td></tr>";
          }
echo "</table></div>";

我知道這有點舊,但是我相信這段代碼將完全按照您想要的現有數組進行操作。

echo "<table><tr><td>Question</td><td>Rating</td></tr>";
 foreach ($marksarray as $mks){
     echo "<tr>";
     foreach ($mks as $qid=>$rate){
        echo "<td>".$rate."</td>";
      }
      echo "</tr>";
}

echo "</table></div>";

有什么理由不這樣做嗎?

嘗試使用此代碼

function printmarraytable($data){
                            echo "<table>";
                            foreach($data as $key=>$value){
                                echo "<tr><td>".$key."</td>";
                                if(is_array($value) || is_object($value)){
                                    echo "<td>".printmarraytable($value)."     </td>";
                                }else{
                                    echo "<td>".$value."</td></tr>";
                                }
                            }
                            echo "</table>";
                          }
                          printmarraytable($req);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM