2017-07-25 56 views
-1

我想從數據庫中提取一些數據並以HTML表格的形式顯示它。如何在foreach循環中增加一個數字?

我想表的第一欄,顯示像1,2,3,4行的數量...

這是我的foreach循環

$i=0;  
foreach($sql as $sql)  
{ 
    echo "<tr>"; 
     echo "<td>$i++</td>"; 
     echo "<td>$sql->jobseeker_name</td>"; 
     echo "<td>$sql->jobseeker_phone</td>"; 
     echo "<td>$sql->login_email</td>"; 
    echo "</tr>"; 
} 

它不工作,我不知道它有什麼問題。

+0

附註:這會產生一行代碼。通過連接'。 「\ n」'echo'd(table)標籤內,它會產生乾淨的HTML。在查看HTML源代碼時,這實際上是一件好事。 –

+0

[PHP Incrementing?]可能重複?(https://stackoverflow.com/questions/17386454/php-incrementing) – mickmackusa

+0

更好的做法是不使用'$ sql'來表示每個「行」。如果您需要重新使用'$ sql'數組,那麼這將成爲一個問題 - 當循環結束時,曾經是包含行的子數組陣列的數組將會是包含最後一行的子數組。 – mickmackusa

回答

2

不要在需要回顯的地方寫$i++。第一回波,並在循環的末尾,添加$i++到incement值:

<?php  

$i = 1;  

foreach ($sql as $sql) { 
    echo "<tr>"; 
    echo "<td>$i</td>"; 
    echo "<td>$sql->jobseeker_name</td>"; 
    echo "<td>$sql->jobseeker_phone</td>"; 
    echo "<td>$sql->login_email</td>"; 
    echo "</tr>"; 

    $i++; 
} 
0

你只需要逃避你我++

echo "<td>".$i++."</td>"; 

因爲$ i ++在是它需要一個PHP增量解析。

所以完整的代碼應該是這樣的:

<?php  
$i=1;  
     foreach($sql as $sql)  
     { 
     echo "<tr>"; 
     echo "<td>".$i++."</td>"; 
     echo "<td>$sql->jobseeker_name</td>"; 
     echo "<td>$sql->jobseeker_phone</td>"; 
     echo "<td>$sql->login_email</td>"; 
     echo "</tr>"; 
     } 
?> 

測試,並預期工作。概念驗證在這裏: https://3v4l.org/mUqZ1

2

串插的基本版本是忽略了++運算符,因爲只知道簡單變量 - 見String Parsing

如果你想要的代碼一個更好看的一點,你可以做這樣的事情:

<!-- language: lang-php --> 
<?php  

$i = 1;  
foreach($sql as $sql): ?> 

    <tr> 
    <td><?= $i++ ?></td> 
    <td><?= $sql->jobseeker_name ?></td> 
    <td><?= $sql->jobseeker_phone ?></td> 
    <td><?= $sql->login_email ?></td> 
    </tr> 
<?php endforeach; 
+0

啊,沒有看到他想開始1,我只是在他的代碼中固定了增量。 關於格式,如果你處理的是不重要的一點html,你可以在你的html上獲得語法高亮等等,如果你離開php上下文。我發現處理起來要容易得多,特別是當涉及匹配標籤,注意未終止的html屬性等時。 –

0

通常,當我投來關閉一個問題,重複,我不會發佈一個答案,但有幾個機會來教育這個問題,是很難在短短的意見來描繪。

如果要在回波線中增加,++出現在$i之前是非常重要的。如果++出現在$i之後,則回顯初始值$i,然後發生增量。

假設我有你的結果集權的結構,這是我會怎麼寫的代碼片段:

代碼:(Demo

$sql=[ 
    (object)['jobseeker_name'=>'A','jobseeker_phone'=>'B','login_email'=>'C'], 
    (object)['jobseeker_name'=>'D','jobseeker_phone'=>'E','login_email'=>'F'], 
    (object)['jobseeker_name'=>'G','jobseeker_phone'=>'H','login_email'=>'I'] 
]; 
foreach($sql as $i=>$row){ 
    echo "<tr>"; 
     echo "<td>",++$i,"</td>"; 
     echo "<td>$row->jobseeker_name</td>"; 
     echo "<td>$row->jobseeker_phone</td>"; 
     echo "<td>$row->login_email</td>"; 
    echo "</tr>"; 
} 

輸出:

<tr> 
    <td>1</td> 
    <td>A</td> 
    <td>B</td> 
    <td>C</td> 
</tr> 
<tr> 
    <td>2</td> 
    <td>D</td> 
    <td>E</td> 
    <td>F</td> 
</tr> 
<tr> 
    <td>3</td> 
    <td>G</td> 
    <td>H</td> 
    <td>I</td> 
</tr> 

此外,作爲最佳實踐的問題:

  • 使用新的變量名來區分$sql對象數組的每一行。如果您使用foreach($sql as $sql){,那麼如果您需要再次訪問$sql,則只能訪問$sql的最後迭代子陣列。這是因爲foreach循環不斷覆蓋輸入數組。

  • 使用逗號而不是點與echo進行連接。這是一個納米優化,但做這個習慣是沒有壞處的。

  • 此外,作爲納米優化的問題,它是更快地使用「預增量」(++$i),而不是在所有情況下的結局都是一樣的「後增量」($i++)。 What's the difference between ++$i and $i++ in PHP?

相關問題