我正在尝试使用php中的foreach循环创建一个表。我觉得这是一个简单的修复,我可能会过度思考它。我能够从单独的包含文件中提取所有数据,但无法在approrpiate列中列出列。
我有一个单独的文件,其中包含以下数组:
<?php
$shop=array(
'cost'=>array('cd1'=>18, 'cd2'=>11, 'cd3'=>11, 'cd4'=>17, 'cd5'=>21),
'name'=>array('cd1'=>'Blink 182', 'cd2'=>'George Jones', 'cd3'=>'Sum 41', 'cd4'=>'Filter', 'cd5'=>'Saliva'),
'quantity'=>array('cd1'=>9, 'cd2'=>8, 'cd3'=>62, 'cd4'=>21, 'cd5'=>41)
);
?>
以下是我试图将上述数据拉入以创建html表的代码:
<?php
include('shop.php');
$headers=$body="";
$html1 = "<h3>Catalog</h3><table border='1'><tr><th>ID</th>\n";
foreach($catalog as $key=>$value){
$headers .= "<th>".$key."</th>\n";
}
$html2 = "</tr>\n";
// use a foreach loop to create $body from the data
$body= "";
foreach ($catalog as $key=>$value) {
foreach ($value as $values){
$body .= "<tr><td>".$key."</td></tr>\n";
$body .= "<tr><td>".$values."</td></tr>";
}
}
echo '</table>';
$html3 = "</table>";
$result = $html1.$headers.$html2.$body.$html3; // concatenations for html
echo $result;
?>
以上内容会将所有值列在第一列ID中。
感谢您的任何提示。
答案 0 :(得分:0)
您以错误的顺序循环遍历数组。外部循环必须是行,但$catalog
的键是列。
$keys = array_keys($catalog);
$first_key = $keys[0];
foreach ($catalog[$first_key] as $id => $value) {
$body .= "<tr><td>" . $id . "</td>";
foreach ($keys as $k) {
$body .= "<td>" . $catalog[$k][$id] . "</td>";
}
$body .= "</tr>";
}
这很复杂的原因是因为您的数据组织不佳。如果将所有相关信息组合在一起,而不是将它们放在单独的数组中,那会好得多。
$catalog = array(
'cd1' => array('name' => 'Blink 182', 'cost' => 18, 'quantity' => 9),
'cd2' => array('name' => 'George Jones', 'cost' => 11, 'quantity' => 8),
...
);
这是嵌套循环可以使用的结构类型。