我想显示3 ul
s:
$one = '<ul>';
$j = 0;
while($j<3){
$one .= '<li data-src="' . $myarray[0][$j] . '"></li>';
$j++;
}
echo $one;
echo '</ul>';
$two = '<ul>';
$j = 0;
while($j<3){
$two .= '<li data-src="' . $myarray[1][$j] . '"></li>';
$j++;
}
echo $two;
echo '</ul>';
$whatever = '<ul>';
$j = 0;
while($j<3){
$whatever .= '<li data-src="' . $myarray[2][$j] . '"></li>';
$j++;
}
echo $whatever;
echo '</ul>';
如何以较短的方式结合上述内容?
答案 0 :(得分:1)
考虑一下您想要显示的内容。在这里,您将有3个列表,每个列表包含一个子列表。所以你需要遍历你的$ myarray(这是一个2D数组):
<?php $j = 0; ?>
<?php foreach( $myarray as $row ): ?>
<ul>
<li data-src="<?php echo $row[$j] ?>"></li>
</ul>
<?php endforeach ?>
foreach
将通过您的第一个维度,因此您只处理下一个维度,这会使您$row
成为一维数组,而不是2,这样可以轻松处理。
这个解决方案是面向模板的,当您需要将逻辑与图形分离时,它非常适合。
答案 1 :(得分:0)
像这样:
for ($i = 0; $i < 3; $i++) {
echo '<ul>';
for ($j = 0; $j < 3; $j++) {
echo '<li data-src="' . $myarray[$i][$j] . '"></li>';
}
echo '</ul>';
}
答案 2 :(得分:0)
$html = "";
for($i=0;$i<=2;$i++) {
$html .= '<ul>';
$j = 0;
while($j<3){
$html .= '<li data-src="' . $myarray[$i][$j] . '"></li>';
$j++;
}
$html .= '</ul>';
}
echo $html;
答案 3 :(得分:0)
这样的事情让人想起:
$i = 0;
$j = 0;
while($i < 3) {
echo '<ul>';
while ($j < 3) {
echo '<li data-src="' . $myarray[$i][$j] . '"></li>';
$j++;
}
echo '</ul>';
$i++;
$j = 0;
}
由于你有两个循环(也可以用for循环替换),你可以将它们嵌套到只输入一次你的html。 这样您也不需要将html存储在字符串中。你可以立即回复它们。
答案 4 :(得分:0)
如果我理解正确,你有相同的代码重复三次。您可以使用嵌套的for / while循环替换它:
$i= 0;
while ($i < 3) {
echo '<ul>';
$j = 0;
while ($j < 3) {
echo '<li data-src="' . $myarray[$i][$j] . '"></li>';
$j++;
}
echo '</ul>';
$i++;
}