0

Zen Cart のモジュールのコードを書いています。$stores_id は、3 つの値を含む配列です。

$stores_id[0]="1";
$stores_id[1]="2";
$stores_id[2]="3";

次のコードでは、配列からのデータで満たされた非表示の入力フィールドをエコーし​​ようとしています

for ($i=0, $n=sizeof($stores_id); $i<$n; $i++)
{
  echo zen_draw_hidden_field('stores_id['. $stores_id[$i]['stores_id'] .']', htmlspecialchars(stripslashes($stores_id[$stores_id[$i]['stores_id']]), ENT_COMPAT, CHARSET, TRUE));
}

エコー結果は次のとおりです。

<input type="hidden" value="2" name="stores_id[1]">
<input type="hidden" value="3" name="stores_id[2]">
<input type="hidden" name="stores_id[3]">

私はそれが次のようになると予想していましたが:

<input type="hidden" value="1" name="stores_id[1]">
<input type="hidden" value="2" name="stores_id[2]">
<input type="hidden" value="3" name="stores_id[3]">

誰が私が間違っているのか教えてもらえますか?

4

1 に答える 1

0

2番目のパラメーター1の深さをネストしすぎているようです-

$stores_id[$stores_id[$i]['stores_id']]

そのため、 which isの代わりに、 which is$i == 0を取得しているとき。そして、あなたが得たとき、配列にないものがあります。$stores_id[1]2$stores_id[0]1$i == 2$stores_id[3]

したがって、外側の配列を削除します-

htmlspecialchars(stripslashes($stores_id[$i]['stores_id'])

または1内側の配列の戻り値から減算します

htmlspecialchars(stripslashes($stores_id[$stores_id[$i]['stores_id']-1])
于 2013-10-29T15:56:47.903 に答える