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

时间:2013-10-29 15:37:29

标签: php arrays for-loop multidimensional-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 个答案:

答案 0 :(得分:0)

看起来你将第二个参数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])