如何比较复选框数组和字符串,并仅检查框

时间:2018-02-21 09:04:11

标签: php codeigniter

我处于一个带有多个复选框的文件的编辑模式现在问题是我有字符串形式的数据并且在for-each之后获取值是1个单个数字或对象我如何比较然后只选中复选框哪个值存在在字符串中

<div class="form-group">
    <ul id="id_extras">
    <?php
    $category = array(
        1 => 'Air Conditioning',
        2 => 'Alarm/Anti-Theft System',
        3 => 'AM/FM Radio',
        4 => 'Aux Audio In',
        5 => 'Bluetooth System',
        6 => 'Body Kit',
        7 => 'Brush Guard',
        8 => 'Cassette Player',
        9 => 'CD Player',
       10 => 'Climate Control',              
    );


    var_dump($values['extras']);
    //results are string "1,2,3,4,5,7,8"

    foreach ($category as $k => $v) {
    ?>
        <li>
            <label for="id_extras_<?= $k; ?>">
                <input class="multiple-select" id="id_extras_<?= $k; ?>" name="extras[]"
                       type="checkbox"
                       value="<?= $k; ?>" 
                       <?php in_array($values['extras'], $k) ? 'checked' : '' ?>> <?= $v; ?>
            </label>
        </li>
    <?php } ?>
        <div class="clearfix"></div>
    </ul>
</div>

1 个答案:

答案 0 :(得分:1)

如果你试图检查匹配的方框,那么你大部分都是正确的:

constructor(
    private communicationService: CommunicationService,
    ) { 
    communicationService.changeEmitted$.subscribe(data => {
      // here fetch data from the session storage 
    })
  }

这将进行确定,并返回一个字符串,但不会打印它。你想要的代码就是:

<?php in_array($values['extras'], $k) ? 'checked' : '' ?>
  • <?= in_array($k, explode(',', $values['extras'])) ? 'checked' : '' ?> <?=的简写操作符。
  • 我们爆炸print,因为它是逗号分隔的字符串,但我们想将其搜索为数组。
  • extras参数是:needle,haystack

此处唯一的其他修改是,将属性呈现为in_array()以符合XHTML可能是明智的。