我有代码:
<?php
if ($user['x'] == 1) { $x_checked = ' checked'; } else { $x_checked = ''; }
if ($user['y'] == 1) { $y_checked = ' checked'; } else { $y_checked = ''; }
if ($user['a'] == 1) { $a_checked = ' checked'; } else { $a_checked = ''; }
if ($user['b'] == 1) { $b_checked = ' checked'; } else { $b_checked = ''; }
if ($user['c'] == 1) { $c_checked = ' checked'; } else { $c_checked = ''; }
[...]
?>
<input name="a" type="checkbox"<?php echo $a_checked; ?> />
<input name="b" type="checkbox"<?php echo $b_checked; ?> />
<input name="c" type="checkbox"<?php echo $c_checked; ?> />
[...]
我有太长的代码(其他相同的行)。这个短代码怎么样?
只需检入输入HTML:
<input name="a" type="checkbox" <?php echo ($user['a'] == 1) ? 'checked' : '' ?> />
<input name="b" type="checkbox" <?php echo ($user['b'] == 1) ? 'checked' : '' ?> />
<input name="c" type="checkbox" <?php echo ($user['c'] == 1) ? 'checked' : '' ?> />
如果值只能是0
或1
(或者如果你想要检查那么可能超过1
)那么它更短:
<?php echo $user['c'] ? 'checked' : '' ?>
如果你要为每个复选框都有一个$user
元素,那么循环它:
<?php foreach($user as $key => $val) { ?>
<input name="<?php echo $key ?>" type="checkbox" <?php echo $val ? 'checked' : '' ?> />
<?php } ?>
从您的评论看来,您可能会回应,如果是,那么只是:
foreach($user as $key => $val) {
$checked = $val ? 'checked' : '';
echo '<input name="'.$key.'" type="checkbox" '.$checked.'/>';
}
欢迎来到Stackoverflow!
Foreach循环和数组在这种情况下是你最好的朋友,这就是我通常这样做的方式。
<?php
$input_name = array('a', 'b', 'c', 'd');
input_data = '';
foreach ($input_name as $value) {
if ($user[$value] == 1) {
$input_data .= '<input name="'.$value.'" type="checkbox" checked>';
} else {
$input_data .= '<input name="'.$value.'" type="checkbox">';
}
}
?>
回应HTML部分中的结果:
<?=$input_data?>
您需要在数组中列出您的密钥并迭代它们。然后你可以在一个循环中附加复选框:
<?php
$keys = array('x', 'y', 'a', 'b', ...)
foreach($keys as $key){
?>
<input name="<?php echo $key; ?>" type="checkbox" <?php echo ($user[$key] === 1)?:"checked":""; ?> />
<?php
}
?>
<?php
$fields = [
'a',
'b',
'etc'
];
foreach ($fields as $field){
if($user[$field] == 1){
$checked = 'checked';
}else{
$checked = '';
}
print('<input name="'.$field.'" type="checkbox" '.$checked.' />');
}
?>