echo '<table border="1" width="800" align="center">';
echo '<caption><h1>使用一個while循環輸出的表格</h1></caption>';
$i=0;
while($i<1000){
if($i%10==0){
if($i%20==0){
$bg="#ffffff";
}else{
$bg="#cccccc";
}
echo '<tr bgColor="'.$bg.'">';
}
echo '<td>'.$i.'</td>';
$i++;
if($i%10==0){
echo '<tr>';
}
}
echo '</table>';
在 echo '<tr bgColor="'.$bg.'">' 這句 , 為什麼當要顯示顏色時的$bg前後要加
"."還有單引號和雙引號 ; 不能直接就把$bg寫在雙引號裡面嗎(雖然我試過,但不是我要的..),
滿想知道他們的邏輯~~~還有在 echo '</table>' 裡的標籤前後一定要加單引號嗎 ??
求解~~~感謝!!!!!
<pre class="c" name="code">
<table border="1" width="800" align="center">
<caption><h1>使用一個for循環輸出的表格</h1></caption>
<?php for($i = 0;$i< 1000 ;$i++):?>
<?php if($i % 10 == 0 && $i != 0):?>
</tr>
<?php endif?>
<?php if($i % 10 == 0):?>
<tr style="background:<?php echo $i % 20 == 0?'#ffffff':'#cccccc'?>">
<?php endif?>
<td><?php echo $i?></td>
<?php endfor?>
</table>
這只是沒把你的邏輯抽出來只是直接將你的code改成另一種比較好懂一點的方式。
事實上這種過多的邏輯判斷本身是不應該放在畫面顯示的。
換成如下的方式做就好的多:
<pre class="c" name="code">
<?php
$result = array();
for($i = 0;$i < 1000;$i ++){
$result[floor($i / 10)][] = $i;
}
?>
<table border="1" width="800" align="center">
<caption><h1>使用一個for循環輸出的表格</h1></caption>
<?php foreach($result as $key => $row):?>
<tr style="background:<?php echo $key % 2 == 0?'#ffffff':'#cccccc'?>">
<?php foreach($row as $value):?>
<td><?php echo $value?></td>
<?php endforeach?>
</tr>
<?php endforeach?>
</table>
把資料變成更容易處理的方式就不會在html的code中跑多餘的判斷方式。
可能你看的範例只是要講解while......不過那個方式不是太好。
資料邏輯和顯示的東西能夠分開就儘量分開。
忘了說。
把資料邏輯和顯示分開之後~~~~~~~
單雙引號的層級就很容易明確的區分出來了。
要注意的是:
單引號:裡面所有的文字不會被php解析,會原原本本將內容顯示:
<pre class="c" name="code">
$name = 'bill';
echo '$name';
會顯示$name
<pre class="c" name="code">
$name = 'bill';
echo "$name";
會顯示bill
但如果變這樣
<pre class="c" name="code">
$name = 'bill';
echo "$namewang"
會變成找不到姓名(或是未宣告變數)
所以要改成:
<pre class="c" name="code">
$name = 'bill'
echo "{$name}wang";
這樣就可以讓變數和字串分開。
所以你注意到了嗎?雙引號內的變數會被php給解析。
所以雙引號才被稱為魔術引號。
只是用的時候卻要很小心很小心很小心。
這就是為什麼建議上還是別把變數寫在魔術引號內~~~切出來串接有點難看但卻比較不會有問題。
感謝sam哥非常詳細
我想你是搞不清楚單引號、雙引號到底是 html 的,還是 php 的。
比較一下下面的幾行程式,它們的效果都一樣,如果你可以分辨它們的用法,那你對php的引號、字串串接、字串內含變數等概念就有一定程度了。
<pre class="c" name="code">echo '<tr bgColor="'.$bg.'">';
echo '<tr bgColor="',$bg,'">';
echo "<tr bgColor='".$bg."'>";
echo "<tr bgColor=\"".$bg."\">";
echo "<tr bgColor='$bg'>";
echo "<tr bgColor=\"$bg\">";