我正在编写一个编辑表单,但我无法让您检查之前选中的复选框的部分正常运行。
例如,我在数据库中有一个包含五个项目的列表,我之前检查了其中两个并保存了表单。当我在表单上按编辑时,我需要再次获取:
[ ] Item 1
[X] Item 2
[ ] Item 3
[X] Item 4
[ ] Item 5
我有两个数组:
$amenities
数据库中的所有项目都在这里。$related
所有之前检查的项目都在这里。(在这种情况下,其中两个)
我如何遍历两个数组来比较它们,所以如果在$related
中找到一个项目$amenities
,它将打印选中的框,如果没有,它将打印未选中的框。这是我与该部分相关的代码。
$amenities (print_r)
Array
(
[0] => Array
(
[itemID] => 3
[itemName] => Crema Chantilly
)
[1] => Array
(
[itemID] => 4
[itemName] => Caribe Cooler
)
[2] => Array
(
[itemID] => 5
[itemName] => Cacahuates Japoneses
)
[3] => Array
(
[itemID] => 6
[itemName] => Cerveza Sol (lata)
)
[4] => Array
(
[itemID] => 7
[itemName] => Chocolate derretido
)
)
$相关(print_r)
Array
(
[0] => Array
(
[itemID] => 3
[itemName] => Crema Chantilly
)
[1] => Array
(
[itemID] => 4
[itemName] => Caribe Cooler
)
)
如您所见,其中有两个项目$related
匹配 中的两个项目$amenities
。
我在这里尝试的是这样的:
<?php foreach ($related as $single) : ?>
<?php foreach ($amenities as $amenity) : ?>
<?php if ( $single === $amenity) : ?>
<input type="checkbox" class="left" checked="yes" name="amenities[]" value="<?=$amenity['itemID']?>">
<label class="checkbox"><?=$amenity['itemName']?></label>
<?php else : ?>
<input type="checkbox" class="left" name="amenities[]" value="<?=$amenity['itemID']?>">
<label class="checkbox"><?=$amenity['itemName']?></label>
<?php endif ?>
<?php endforeach;?>
<?php endforeach;?>
但是,对于完整的选项列表,结果是重复的。我得到这个:
[X] Item 1
[ ] Item 2
[ ] Item 3
[ ] Item 4
[ ] Item 5
[ ] Item 1
[ ] Item 2
[X] Item 3
[ ] Item 4
[ ] Item 5
我需要得到
[X] Item 1
[ ] Item 2
[X] Item 3
[ ] Item 4
[ ] Item 5
也许这很容易做到,但我不知道如何完成。也许我对两者采取了错误的方法foreach
?