我想从数据库中获取一些数据并以HTML表格的形式显示它。
我希望表格的第一列显示行数,如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 :(得分:3)
不要将$i++
写在您想要回声的位置。首先回应它,然后在循环结束时,将<?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++;
}
添加到值中:
position: relative
答案 1 :(得分:3)
字符串插值的基本版本忽略了++运算符,因为它只知道简单变量 - 请参阅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;
答案 2 :(得分:0)
你只需要逃避你的i ++
<?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 ++是PHP增量,所以需要对其进行解析。
所以完整的代码看起来像这样:
{{1}}
按预期测试并正常工作。这里的概念证明: https://3v4l.org/mUqZ1
答案 3 :(得分: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?
答案 4 :(得分:-2)
尝试此代码
$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>";
i++;
}