簡體   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