如何组合以下代码?

时间:2016-06-29 09:09:16

标签: php

我想显示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>';

如何以较短的方式结合上述内容?

5 个答案:

答案 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++;
}