[英]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.