編集フォームをコーディングしていますが、以前にチェックしたチェックボックスをチェックする部分が正しく機能しません。
たとえば、データベースに 5 つのアイテムのリストがあり、以前にそのうちの 2 つをチェックしてフォームを保存したとします。フォームで編集を押すと、これをもう一度取得する必要があります。
[ ] Item 1
[X] Item 2
[ ] Item 3
[X] Item 4
[ ] Item 5
私は2つの配列を持っています:
$amenities
データベース内のすべての項目がここにあります。$related
以前にチェックした項目はすべてここにあります。(この場合は2つ)
2 つの配列を比較して比較するに$related
はどう$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
)
)
ご覧のとおり、 の 2 つのアイテム$related
と一致する の 2 つのアイテムがあり$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
多分それは簡単なことですが、これを行う方法がわかりません。たぶん、私は2つで間違ったアプローチを取っていforeach
ますか?