簡體   English   中英

如何合並以下代碼?

[英]How can I combine the following code?

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

如何以較短的方式結合以上內容?

考慮一下您要首先顯示的內容。 在這里,您將擁有3個列表,這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個較輕的數組。

該解決方案是面向模板的,非常適合需要從圖形中分離邏輯的情況。

像這樣:

for ($i = 0; $i < 3; $i++) {
    echo '<ul>';
    for ($j = 0; $j < 3; $j++) {
        echo '<li data-src="' . $myarray[$i][$j] . '"></li>';
    }
    echo '</ul>';
}
$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;

像這樣的事情浮現在腦海:

$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存儲在字符串中。 您可以立即回顯它們。

如果我理解正確,那么您的相同代碼將重復三次。 您可以簡單地將其替換為嵌套的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++;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM