选中数组中存在的所有值

Checkboxing all values that are present in the array

目前我正在从我的数据库中获取所有值并在它们旁边放置一个复选框。默认情况下,所有复选框都未选中,但其 id 存在于数据库中的复选框应标记为已选中。为此,我使用了以下代码:

查看Class:

    <?php if($facilities) foreach($facilities as $facility):  ?>
     <?php foreach($checked_facility as $key => $value){ ?>
        <fieldset id="availablenetworked">
            <input type="checkbox" <?php echo ($value['facilities_id'] == $facility['id'] ? 'checked' : ''); ?> 
            name="facility[]" id="<?php echo $facility['id'] ?>" value="<?php echo $facility['id'] ?>"> 
            <label for="<?php echo $facility['id'] ?>"><?php echo $facility['title'] ?></label>
        </fieldset>
    <?php } endforeach; ?>

正确执行此操作会勾选我数据库中的所有值,但会弄乱我的视图并使其看起来像这样:

$facilities用于获取设施的所有记录,$checked_facility用于检查特定人员选择的值。

从 $checked_facility 返回的响应看起来像这样,我正在尝试访问 facilities_id 并在我的列表中用复选标记标记所有那些。

您有 2 个嵌套循环,这可能会导致重复问题。为什么不先预处理您检查过的 ID,然后将它们存储在一个数组中。然后您可以在一个循环中引用它们。像

<?php 
$checked = array();
foreach($checked_facility as $key => $value){ 
  $checked[]=$value['facilities_id'];
}?>

然后,您可以遍历您的列表并检查 in_array() https://www.php.net/manual/en/function.in-array.php

<?php if($facilities) foreach($facilities as $facility):  ?>
        <fieldset id="availablenetworked">
            <input type="checkbox" <?php echo in_array($facility['id'], $checked) ? 'checked' : ''; ?> 
            name="facility[]" id="<?php echo $facility['id'] ?>" value="<?php echo $facility['id'] ?>"> 
            <label for="<?php echo $facility['id'] ?>"><?php echo $facility['title'] ?></label>
        </fieldset>
    <?php endforeach; ?>