2

この場合、選択された製品である 0,0,1,0 のようなもので、DB から配列を返しています。それで、要素を選択済みとしてマークする必要があるかどうかを確認しています。

$p製品グループの配列を取得します。次に、一連の要素に対して、次のようなものを使用します。

<input <?= $p[0]=='1'?'checked':'';?> value="Product 1" />
<input <?= $p[1]=='1'?'checked':'';?> value="Product 2" />
<input <?= $p[2]=='1'?'checked':'';?> value="Product 3" />
<input <?= $p[3]=='1'?'checked':'';?> value="Product 4" />

しかし、選択がまったく行われていない場合があり、空の配列が返され、次のような php エラーがトリガーされます。Uninitialized string offset: 3

マークアップをきれいに保ちながら、空の配列を処理するにはどうすればよいでしょうか? セパレート機能とか?


アップデート

更新されたソリューション。4 つの無線で最初の 3 つがチェックされます。

<?php $p=check(1); ?>

<input type="radio" <?= !empty($p[0])?'checked':'';?>>
<input type="radio" <?= !empty($p[1])?'checked':'';?>>
<input type="radio" <?= !empty($p[2])?'checked':'';?>>
<input type="radio" <?= !empty($p[3])?'checked':'';?>>

>また、SQL クエリの結果は空の配列でさえない場合があります。クエリの結果が何も得られない場合、結果として空の配列が設定されることさえありませんか?

4

1 に答える 1

8

使用empty():

<input <?= !empty($p[0]) ? 'checked' : ''; ?> value="Product 1" />

ドキュメントから:

変数が存在しない場合、警告は生成されません。つまり、 empty() は本質的に !isset($var) || と同等の簡潔なものです。$var == 偽。

0false 値であるため、これはあなたの場合に機能します。

于 2013-07-24T14:02:31.947 に答える