为什么检查属性不工作的单选按钮使用PHP


Why is Checked attribute not working for radio button using PHP?

下面是我的代码片段:

echo "<tr>
    <td>Fruits</td>
    <td>
    <input type='radio' name='fruit' value='Apple'    ($fruit=='Apple')?'checked':''> Apple
    <input type='radio' name='chamber' value='Banana' ($fruit=='Banana')?'checked':''> Banana</td>
    </tr>";

$fruit的值为Apple,但单选按钮属性仍未设置为checked

如果您检查此输出,您可以看到该语句不会像您希望的那样执行,因为它在" "内部。您需要在检查之前打破",并在检查之后继续,如下所示:

echo "<tr>
 <td>Fruits</td>
 <td>
 <input type='radio' name='fruit' value='Apple'  " .  (($fruit=='Apple')?'checked="checked"':'') . "> Apple
 <input type='radio' name='chamber' value='Banana' " .(($fruit=='Banana')?'checked="checked"':'') . "> Banana</td>
</tr>";

最好在括号(...)中包含所有内容,以免混淆其他内容。

当你想把某些东西标记为选中时,最好使用checked="checked"

发现问题最简单的方法:

if($fruit=='Apple') $check="checked"; else $check="";
if($fruit=='Banana') $check="checked"; else $check="";
	
echo "<tr>
 <td>Fruits</td>
 <td>
 <input type='radio' name='fruit' value='Apple'  " .$check. "> Apple
 <input type='radio' name='chamber' value='Banana' " .$check. "> Banana</td>
</tr>";

在您的示例中,您可以在($fruit=='Apple')中添加?'checked':'',或者为所有ternary添加一个括号。

示例(最好在需要的地方使用<?php ?>):

<tr>
<td>Fruits</td>
<td>
<input type='radio' name='fruit' value='Apple' <?=($fruit=='Apple' ? 'checked' : '')?>> Apple
<input type='radio' name='fruit' value='Banana' <?=($fruit=='Banana' ? 'checked' : '')?>> Banana</td>
</tr>