使用serialize和printf在循环中回显所选


Echoing selected on a loop with serialise and printf

显示小时数,我如何回显或打印选择,变量是$value['hour'],对不起,我以前从未使用过%1$s-%2$s。

    <?php $time = mktime(0, 0, 0, 1, 1);
for ($i = 0; $i < 86400; $i += 1800) {  
// 1800 = half hour, 86400 = one day
    printf('<option value="%1$s-%2$s" >%1$s-%2$s</option>',
           date('g:i', $time + $i), date('g:i a', $time + $i + 1800));
}  ?>

我试过像

   <?php $time = mktime(0, 0, 0, 1, 1);
for ($i = 0; $i < 86400; $i += 1800) {  
// 1800 = half hour, 86400 = one day
    if($value['hour'] == "%1$s-%2$s" ){ $selected = "selected" ;}else {$selected= "";}
    printf('<option value="%1$s-%2$s" '.$selected.'>%1$s-%2$s</option>',
           date('g:i', $time + $i), date('g:i a', $time + $i + 1800));
}  ?>

但是也不工作。有什么想法吗?

看起来您正在尝试使用PHP脚本获取所选选项的值,但是PHP无法按照您尝试使用它的方式工作。当客户端导航到PHP文件时,PHP脚本在服务器上执行。PHP执行完毕后,生成的HTML被发送到客户机的浏览器。生成该HTML的PHP脚本将无法访问客户端与该HTML的任何交互,因为该脚本不再执行。如果只是想在页面的其他地方显示所选选项的值,可以使用JavaScript。如果您希望将值发送回服务器,则应该使用另一个PHP文件作为表单操作。

我是这样得到它的

<?php $time = mktime(0, 0, 0, 1, 1);
for ($i = 0; $i < 86400; $i += 1800) {  
// 1800 = half hour, 86400 = one day
    $var = sprintf('%1$s-%2$s',date('g:i', $time + $i), date('g:i a', $time + $i + 1800));
    if($value['hour'] == $var ){ $selected = "selected" ;}else {$selected= "";}
    printf('<option value="%1$s-%2$s" %3$s>%1$s-%2$s %3$s</option>',
           date('g:i', $time + $i), date('g:i a', $time + $i + 1800), $selected);
}  ?>