从PHP检查HTML

问题描述 投票:0回答:4

我有代码:

<?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; ?> />
    [...]

我有太长的代码(其他相同的行)。这个短代码怎么样?

php html
4个回答
3
投票

只需检入输入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' : '' ?> />

如果值只能是01(或者如果你想要检查那么可能超过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.'/>';
}

1
投票

欢迎来到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?>

0
投票

您需要在数组中列出您的密钥并迭代它们。然后你可以在一个循环中附加复选框:

<?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
    }
?>

0
投票
<?php
$fields = [
    'a',
    'b',
    'etc'
];

foreach ($fields as $field){
    if($user[$field] == 1){
        $checked = 'checked';
    }else{
        $checked = '';
    }
    print('<input name="'.$field.'" type="checkbox" '.$checked.' />');
}

?>
© www.soinside.com 2019 - 2024. All rights reserved.