如何在 php 中的单引号字符串内执行 while 循环
How to execute while loop inside single quote string in php
我是一名 PHP 初学者,正在为学习目的开发一个简单的项目,此时我正在尝试在另一个 while 循环中执行一个 while 循环。但是第二个循环在单引号字符串中。两个循环的输出都存储在正常的 html/bootstrap table 单元格中。起初我能够获得第一个循环的输出,但是当我在字符串中添加第二个循环时出现了问题。我已经研究过在 PHP 中使用引号,但我仍然无法弄清楚问题所在。下面是代码。
请有人帮忙。
$output .='<div class="table-responsive">
<table class="table table-bordered"><form>';
while($row = $result->fetch_assoc()){
$output .='
<tr>
<td width="30%"><label>Price</label></td>
<td>
<div class="form-group">
<input type="text" class="form-control" placeholder="'.$row['price'].'">
</div>
</td>
</tr>
<tr>
<td width="30%"><label>Writer</label></td>
<td>
<div class="form-group">
<select class="form-control" id="">
'.while($col = $res->fetch_assoc()){.'
<option value="" disabled selected>'.$row['name'].'</option>
<option value="" >'. $col['username'].'</option>
'.} .'
</select>
</div>
</td>
</tr>
';
}
$output .="</table></div></form>";
echo $output;
}
我得到的错误是:
解析错误:语法错误,意外 'while' (T_WHILE) in C:\xampp\htdocs\Writers_SM\select.php on line 61(second while loop )
您不能像此处那样连接循环。您可以做的是将字符串的初始部分存储到一个变量中,然后第二次循环并使用 .=
将字符串附加到原始字符串,然后完成字符串的其余部分。类似的东西:
$output .='<div class="table-responsive">
<table class="table table-bordered"><form>';
while($row = $result->fetch_assoc()){
$output .='
<tr>
<td width="30%"><label>Price</label></td>
<td>
<div class="form-group">
<input type="text" class="form-control" placeholder="'.$row['price'].'">
</div>
</td>
</tr>
<tr>
<td width="30%"><label>Writer</label></td>
<td>
<div class="form-group">
<select class="form-control" id="">';
while($col = $res->fetch_assoc()) {
$output .= ' <option value="" disabled selected>'.$row['name'].'</option>
<option value="" >'. $col['username'].'</option>'
}
$output .= '</select>
</div>
</td>
</tr>
';
}
$output .="</table></div></form>";
echo $output;
}
但在这一点上,它变得非常混乱。您需要记住,PHP 个文件只是 html 个 具有好处 的文件。所以你可以简单地写你的 HTML 正常,然后在你的循环和其他 php 相关的东西中使用 php 标签:
// rest of the php file
// we are closing the php for now
?>
<div class="table-responsive">
<table class="table table-bordered">
<form>
<!-- The first loop starts here -->
<?php while($row = $result->fetch_assoc()): ?>
<tr>
<td width="30%"><label>Price</label></td>
<td>
<div class="form-group">
<! -- note here, that <?= ?> is an alias for <?php echo ?> -->
<input type="text" class="form-control" placeholder="<?= $row['price'] ?>">
</div>
</td>
</tr>
<tr>
<td width="30%"><label>Writer</label></td>
<td>
<div class="form-group">
<select class="form-control" id="">
<!-- the second loop starts here -->
<?php while($col = $res->fetch_assoc()): ?>
<option value="" disabled selected><?= $row['name'] ?></option>
<option value="" ><?= $col['username'] ?></option>
<?php endwhile; ?>
<!-- the second loop ends here -->
</select>
</div>
</td>
</tr>
<?php endwhile; ?>
<!-- the first loop ends here -->
</form>
</table>
</div>
注意 PHP 如何不在 内部 HTML,我们用组合替换括号 ( {
)冒号和 endwhile;
.
虽然此方法可能存在争议,但我更喜欢它而不是您之前使用的方法。
我是一名 PHP 初学者,正在为学习目的开发一个简单的项目,此时我正在尝试在另一个 while 循环中执行一个 while 循环。但是第二个循环在单引号字符串中。两个循环的输出都存储在正常的 html/bootstrap table 单元格中。起初我能够获得第一个循环的输出,但是当我在字符串中添加第二个循环时出现了问题。我已经研究过在 PHP 中使用引号,但我仍然无法弄清楚问题所在。下面是代码。 请有人帮忙。
$output .='<div class="table-responsive">
<table class="table table-bordered"><form>';
while($row = $result->fetch_assoc()){
$output .='
<tr>
<td width="30%"><label>Price</label></td>
<td>
<div class="form-group">
<input type="text" class="form-control" placeholder="'.$row['price'].'">
</div>
</td>
</tr>
<tr>
<td width="30%"><label>Writer</label></td>
<td>
<div class="form-group">
<select class="form-control" id="">
'.while($col = $res->fetch_assoc()){.'
<option value="" disabled selected>'.$row['name'].'</option>
<option value="" >'. $col['username'].'</option>
'.} .'
</select>
</div>
</td>
</tr>
';
}
$output .="</table></div></form>";
echo $output;
}
我得到的错误是: 解析错误:语法错误,意外 'while' (T_WHILE) in C:\xampp\htdocs\Writers_SM\select.php on line 61(second while loop )
您不能像此处那样连接循环。您可以做的是将字符串的初始部分存储到一个变量中,然后第二次循环并使用 .=
将字符串附加到原始字符串,然后完成字符串的其余部分。类似的东西:
$output .='<div class="table-responsive">
<table class="table table-bordered"><form>';
while($row = $result->fetch_assoc()){
$output .='
<tr>
<td width="30%"><label>Price</label></td>
<td>
<div class="form-group">
<input type="text" class="form-control" placeholder="'.$row['price'].'">
</div>
</td>
</tr>
<tr>
<td width="30%"><label>Writer</label></td>
<td>
<div class="form-group">
<select class="form-control" id="">';
while($col = $res->fetch_assoc()) {
$output .= ' <option value="" disabled selected>'.$row['name'].'</option>
<option value="" >'. $col['username'].'</option>'
}
$output .= '</select>
</div>
</td>
</tr>
';
}
$output .="</table></div></form>";
echo $output;
}
但在这一点上,它变得非常混乱。您需要记住,PHP 个文件只是 html 个 具有好处 的文件。所以你可以简单地写你的 HTML 正常,然后在你的循环和其他 php 相关的东西中使用 php 标签:
// rest of the php file
// we are closing the php for now
?>
<div class="table-responsive">
<table class="table table-bordered">
<form>
<!-- The first loop starts here -->
<?php while($row = $result->fetch_assoc()): ?>
<tr>
<td width="30%"><label>Price</label></td>
<td>
<div class="form-group">
<! -- note here, that <?= ?> is an alias for <?php echo ?> -->
<input type="text" class="form-control" placeholder="<?= $row['price'] ?>">
</div>
</td>
</tr>
<tr>
<td width="30%"><label>Writer</label></td>
<td>
<div class="form-group">
<select class="form-control" id="">
<!-- the second loop starts here -->
<?php while($col = $res->fetch_assoc()): ?>
<option value="" disabled selected><?= $row['name'] ?></option>
<option value="" ><?= $col['username'] ?></option>
<?php endwhile; ?>
<!-- the second loop ends here -->
</select>
</div>
</td>
</tr>
<?php endwhile; ?>
<!-- the first loop ends here -->
</form>
</table>
</div>
注意 PHP 如何不在 内部 HTML,我们用组合替换括号 ( {
)冒号和 endwhile;
.
虽然此方法可能存在争议,但我更喜欢它而不是您之前使用的方法。