我很难用不同的行迭代数组。
我在PHP中有这种类型的数组。
Array
(
[1] => Array
(
[0] => Array
(
[detail-1] => 1
[detail-2] => 2
)
[1] => Array
(
[detail-3] => 3
[detail-4] => 4
)
)
[2] => Array
(
.....
)
)
Ant我希望输出为HTML,如下所示:
<tr>
<td>1</td>
</tr>
<tr>
<td>detail-1</td>
<td>detail-2</td>
</tr>
<tr>
<td>detail-3</td>
<td>detail-4</td>
</tr>
<tr>
<td>2</td>
</tr>
...........
那么,如何从逻辑上解决这个问题?
提前致谢。
答案 0 :(得分:0)
你有多个子数组,所以遍历每个数组
尝试以下代码:
$arr = Array
(
1 => Array
(
0 => Array
(
"detail-1" => 1,
"detail-2" => 2
),
1 => Array
(
"detail-3" => 3,
"detail-4" => 4
),
),
2 => Array
(
0 => Array
(
"detail-5" => 5,
"detail-6" => 6
),
1 => Array
(
"detail-7" => 7,
"detail-8" => 8
),
)
);
echo "<table border=1>";
foreach ($arr as $key => $value) {
echo "<tr><td>$key</td></tr>";
if(is_array($value))
{
for($i = 0; $i<count($value);$i++)
{
if(is_array($value[$i]))
{
echo "<tr>";
foreach ($value[$i] as $key1 => $value1) {
echo "<td>$key1</td>";
}
echo "</tr>";
}
}
}
}
echo "</table>";
输出将是:
<table border="1">
<tbody>
<tr>
<td>1</td>
</tr>
<tr>
<td>detail-1</td>
<td>detail-2</td>
</tr>
<tr>
<td>detail-3</td>
<td>detail-4</td></tr>
<tr>
<td>2</td>
</tr>
<tr>
<td>detail-5</td>
<td>detail-6</td>
</tr>
<tr>
<td>detail-7</td>
<td>detail-8</td>
</tr>
</tbody>
</table>
答案 1 :(得分:0)
尝试如下:
foreach($array as $key => $item) {
echo '<tr><td colspan="2">' . $key. '</td></tr>';
foreach($item as $val) {
echo "<tr>";
foreach($val as $k => $isu) echo "<td>" . $k . "</td>";
echo "</tr>";
}
}
答案 2 :(得分:0)
$array=array
(
1 => array
(
0 => array
(
'detail-1' => 1,
'detail-2' => 2
),
1 => array
(
'detail-3' => 3,
'detail-4' => 4
)
),
2 =>array
(
0 => array
(
'detail-1' => 1,
'detail-2' => 2
),
1 => array
(
'detail-3' => 3,
'detail-4' => 4
)
)
);
$html="";
foreach($array as $k=>$v){
$html .="<tr><td>".$k."</td></tr>";
foreach($v as $i){
$html.="<tr>";
foreach($i as $key=>$value)$html.="<td>".$key."</td>";
$html.="</tr>";
}
}
echo $html;
答案 3 :(得分:0)
你可以试试这个。这更清洁,更容易理解。
<强> CODE:强>
$table =array(
'1' => array(
'0' => array(
"detail-1" => 1,
"detail-2" => 2,
),
'1' => array(
"detail-3" => 3,
"detail-4" => 4,
)
),
'2' => array(
'0' => array(
"detail2-1" => 1,
"detail2-2" => 2,
),
'1' => array(
"detail2-3" => 3,
"detail2-4" => 4,
)
)
);
$output = '';
foreach($table as $first_tr_key => $first_tr){
$output .= '<tr><td>' . $first_tr_key . '</td></tr>';
foreach($first_tr as $second_tr_key => $second_tr){
$output .= '<tr>';
foreach($second_tr as $key => $val){
$output .= '<td>' . $key . '</td>';
}
$output .= '</tr>';
}
};
echo $output;
<强>输出:强>
<tr>
<td>1</td>
</tr>
<tr>
<td>detail-1</td>
<td>detail-2</td>
</tr>
<tr>
<td>detail-3</td>
<td>detail-4</td>
</tr>
<tr>
<td>2</td>
</tr>
<tr>
<td>detail2-1</td>
<td>detail2-2</td>
</tr>
<tr>
<td>detail2-3</td>
<td>detail2-4</td>
</tr>
答案 4 :(得分:0)
您可以使用嵌套的foreach循环遍历数组以获得所需的输出
这是一些技巧。
你的阵列..
$arr = Array(
1 => Array(0 => Array('detail1' => 101, 'detail2' => 201), 1 => Array( 'detail3' => 301, 'detail4' => 401)),
2 => Array(0 => Array('detail1' => 102, 'detail2' => 202), 1 => Array( 'detail3' => 302, 'detail4' => 402))
);
这里是示例代码:
echo '<table><thead><tr><th></th><th></th></td></thead><tbody>';
foreach($arr as $key => $outerArr){
echo '<tr><td>'.$key.'</td></tr>';
foreach($outerArr as $inKey => $inArr){
echo '<tr>';
foreach($inArr as $innerArr)
echo '<td>'.$innerArr.'</td>';
echo '</tr>';
}
}
echo '</tbody></table>';
和输出。
<table>
<thead>
<tr>
<th></th>
<th></th>
</td>
</thead>
<tbody>
<tr>
<td>1</td>
</tr>
<tr>
<td>101</td>
<td>201</td>
</tr>
<tr>
<td>301</td>
<td>401</td>
</tr>
<tr>
<td>2</td>
</tr>
<tr>
<td>102</td>
<td>202</td>
</tr>
<tr>
<td>302</td>
<td>402</td>
</tr>
</tbody>
</table>
答案 5 :(得分:0)
这是我的目标,2个foreach循环,
<?php
$table =array(
'1' => array(
'0' => array(
"detail-1" => 1,
"detail-2" => 2,
),
'1' => array(
"detail-3" => 3,
"detail-4" => 4,
)
),
'2' => array(
'0' => array(
"detail2-1" => 1,
"detail2-2" => 2,
),
'1' => array(
"detail2-3" => 3,
"detail2-4" => 4,
)
)
);
foreach($table as $key => $array){
echo "<tr>
\t<td colspan=\"2\" >{$key}</td>
</tr>
";
foreach($array as $k => $row){
$one = key($row);
next($row);
$two = key($row);
echo "<tr>
\t<td>{$one}</td>
\t<td>{$two}</td>
</tr>
";
}
}
输出
<tr>
<td colspan="2" >1</td>
</tr>
<tr>
<td>detail-1</td>
<td>detail-2</td>
</tr>
<tr>
<td>detail-3</td>
<td>detail-4</td>
</tr>
<tr>
<td colspan="2" >2</td>
</tr>
<tr>
<td>detail2-1</td>
<td>detail2-2</td>
</tr>
<tr>
<td>detail2-3</td>
<td>detail2-4</td>
</tr>
您可以使用key()
和next()
跳过一个循环您可以在此处尝试
http://sandbox.onlinephpfunctions.com/code/7231900a23f7f6afd8a57b979a27009a0fc7034b
哦,不要忘记单colspan="2"
<td>