在来自另一个循环的foreach循环内显示['name']

时间:2010-02-12 14:51:09

标签: php

是否可以使用foreach循环内部的索引值,每个循环包含在partent中。请查看下面的脚本,并观察每个我使用echo'<div>' .$product['name'] . '</div>';的孩子,当$product[' name '];属于每个人的父母时['name ']。那可能吗?我希望在子foreach()中使用索引foreach($tree as $product){ echo '<div>' . $product['name']. '</div>'; foreach($product['variery'] as $variety) { echo'<div>'. $variery['image'] . '</div>'; echo'<div>' .$product['name'] . '</div>'; } // end of child for each } //end of parent for each

{{1}}

2 个答案:

答案 0 :(得分:2)

是的,有可能。

即使在循环之外,也会定义$product(最后一个值保持分配)。

评论中的问题:我也可以这样做吗?

value="', $variety['price'], $variety['variety'], $product['name'],'";

上面的代码将进入子循环。

<强>答案: 是的,但是这种语法会导致错误。要在双引号中使用关联数组,请跳过单引号。

value="', $variety[price], $variety[variety], $product[name],'";

或使用点:

value="', " . $variety[price] . ", " . $variety[variety] . ", " . $product[name] . ",'";

答案 1 :(得分:0)

是的,如果在父循环中定义变量,那么它将在任何子循环中保留其值,因为这些子循环本身不会重新定义变量。就你的内循环而言,$ product是循环生命周期的“局部”常量,因此$ product ['name']和$ product ['variery']在外部的下一次迭代之前不会改变循环。

作为次要性能提示,您不必在echo语句中进行字符串连接。 echo将接受多个以逗号分隔的值。以下内容完全相同,没有两个连接的开销:

echo '<div>', $product['name'], '</div>'; // notice the commas

这是次要的,但如果这成为一个繁琐的代码路径,任何保存的周期都是一件好事。