我有一个多维数组,我试图输出为表格, 这是我的阵列;
$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>";
但我的输出是;
我做错了什么?
答案 0 :(得分:6)
你有太多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>";
修改强>
为了将来参考,如果您使用具有有意义键的关联数组数组,它将使您的代码更容易理解。 e.g。
$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(模型,视图,控制器)并将此数据传递到视图中...但这完全是另一个主题。
答案 1 :(得分:1)
当您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
值。
答案 2 :(得分:0)
将回波线更改为
echo "<tr><td>".$rate[0]."</td><td>".$rate[1]."</td></tr>";
有效吗?
答案 3 :(得分:0)
输出正确,你的循环看起来很好。我认为你在数组中的意思是:
$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>";
答案 4 :(得分:0)
我知道这有点旧,但我相信这段代码可以完全按现有数据执行。
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>";
有没有理由不这样做?
答案 5 :(得分:0)
尝试使用此代码
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);