[英]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>";
...,以便您利用鍵值提取要顯示的匹配值。
如果您不拘泥於現在的數組結構,則必須像這樣構造數組,以利用key
和pair
值:
$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>";
...這樣一來,您可以清楚地引用代碼中的key
和pair
值。
將回聲線更改為
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.