繁体   English   中英

重置PHP中的foreach循环以多次运行

[英]Reset a foreach loop in PHP for multiple runs

我有一个带有9个下拉框的表单,需要由同一查询填充。 我使用foreach循环列出选项,但是将代码复制到scond下拉列表中不会产生任何选项。 我猜是因为结果已经循环,所以什么也没找到。

如何为每个循环重新设置结果? 或者,也许有一种更有效的方式来实现这一点,这也许有人会知道。

这是查询:

$qry2 = "SELECT ride_id, name FROM tpf_rides WHERE park_id = $park_id ORDER BY name ASC";
        $res2 = $pdo->query($qry2);

这是我正在使用的循环:

<select name="ride_id_image">
    <option value="">Select Ride</option>

<?php   foreach ($res2 as $row2) {
    printf('<option value="%s">%s</option>' . PHP_EOL, $row2['ride_id'], $row2['name'] );
 } ?>
    </select>

谢谢

有一种更有效的方法可以做到这一点。 不必多次遍历结果集,而是将其写入一次字符串,然后可以根据需要多次重复使用它:

<?php   

$options = "";

foreach ($res2 as $row2) {
    $options .= sprintf('<option value="%s">%s</option>' . PHP_EOL, $row2['ride_id'], $row2['name'] );
 } 

 ?>

现在,每当您要打印选项时,都可以回显您的字符串:

<select name="ride_id_image">
    <option value="">Select Ride</option>
    <?php echo $options ?>    
    </select>

第一次运行时,将结果集中的数据复制到数组中。 在每个后续运行中,对数组而不是结果集执行foreach

或者,您可能很聪明,像@andrewsi所说的那样做。

安德鲁西的答案是最有效的。 但是要回答您要完成的任务,您可以从PDO获取阵列:

$qry2 = "SELECT ride_id, name FROM tpf_rides WHERE park_id = $park_id ORDER BY name ASC";
$result = $pdo->query($qry2);
$res2 = $result->fetch(PDO::FETCH_ASSOC);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM