像这样的东西
printf('<input type="radio" name="subscribedrips" value="Yes" %s /> Yes'."\n",
($subscribedrips == 'Yes' ? 'CHECKED' : ''));
printf('<input type="radio" name="subscribedrips" value="No" %s /> No'."\n",
($subscribedrips == 'No' ? 'CHECKED' : ''));
作品。它使用三元运算符'CHECKED'
根据 的值将或空字符串插入到输入标签中$subscribedrips
。
您还可以以更详细的方式进行操作,例如使用 switch:
$sel_y = '';
$sel_n = '';
switch($subscribedrips)
{
case 'Yes':
$sel_y = 'CHECKED';
break;
case 'No':
$sel_n = 'CHECKED';
break;
default:
// Neither need to be changed, so we dont even need this branch
break;
}
printf('<input type="radio" name="subscribedrips" value="Yes" %s /> Yes'."\n", $sel_y);
printf('<input type="radio" name="subscribedrips" value="No" %s /> No'."\n", $sel_n);
个人喜好真的。
更新片段 1
printf('<input type="radio" name="subscribedrips" value="Yes" %s /> Yes'."\n",
((array_key_exists('subscribedrips', $row) && $row['subscribedrips'] == 'Yes') ? 'CHECKED' : ''));
printf('<input type="radio" name="subscribedrips" value="No" %s /> No'."\n",
((array_key_exists('subscribedrips', $row) && $row['subscribedrips'] == 'No') ? 'CHECKED' : ''));
更新片段 2
$sel_y = '';
$sel_n = '';
if(array_key_exists('subscribedrips', $row))
{
switch($row['subscribedrips'])
{
case 'Yes':
$sel_y = 'CHECKED';
break;
case 'No':
$sel_n = 'CHECKED';
break;
default:
// Neither need to be changed, so we dont even need this branch
break;
}
}
printf('<input type="radio" name="subscribedrips" value="Yes" %s /> Yes'."\n", $sel_y);
printf('<input type="radio" name="subscribedrips" value="No" %s /> No'."\n", $sel_n);
关于您的最后一个问题,我们的方法之间的区别非常简单,但再一次(啊!)它是一种风格选择,两者都实现了相同的目标,两种方法都用于“生产”PHP 代码。
我的示例在 PHP 中构建了整个输入标记并打印出来。Valentinas 的方法将静态文本从 PHP 字符串中提取出来,并将其直接放入 HTML。
例如,以下行都将产生相同的输出:
<?php printf("<strong>%s</strong>", $some_string); ?>
<?php echo "<strong>$some_string</strong>"; ?>
<?php echo "<strong>".$some_string."</strong>"; ?>
<strong><?php echo $some_string; ?></strong>
我怀疑这两种方法之间是否存在任何显着的性能差异,但我将强调一个外观差异。
如果您想有条件地打印整个标签,那么在如何格式化您的代码时会有一些细微的差异,但它们并不值得讨论——在我看来,最大的差异是语法突出显示。