for 循环不会回显我的数组中的预期值


for loop is not echoing the expected values from my array

我正在为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]">

谁能告诉我我做错了什么?

看起来你把第二个参数 1 的深度嵌套得太远了——

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

所以当$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])