2011-06-08 85 views
0

好了,所以我有这样的foreach PHP循环在循环寻找下一个单元

<?php foreach($final_products as $product){ ?> 

,我访问它像这样

<?php print $product['product_price']; ?> 

这是伟大的,但我必须面对的挑战是如何我是否可以访问阵列中的下一个元素,所以像这样

<?php print $product['product_price'] + $product["next_product"]['product_price']; ?> 

next_product只是一个名字,我必须illustra TE,我需要在未来的产品中,产品阵列的价格,但仍继续与阵列循环的流程...任何想法

+2

数组是如何索引的?它是一个数字数组还是一个关联数组?如果它是一个数字数组,那么不要使用foreach循环,而要使用for循环,然后您可以简单地+1键到当前键以获取下一个。 – 2011-06-08 16:14:20

+0

关联数组 – Trace 2011-06-08 16:20:43

+2

[在PHP 5.2中迭代数组时可能会出现重复](http://stackoverflow.com/questions/2458099/peek-ahead-when-iterating-an-array-in-php-5-2 ) – Wrikken 2011-06-08 16:21:46

回答

1
<?php 
    for($i=0;$i<count($final_products)-1;$i++){ 
     echo $final_products[$i+1]; 
    } 
?> 

用途:$i + 1

我已经加入for循环是安全的在数组中的最后一个元素的转换中。由于@KonForce

如果你需要的东西与数组的最后一个elemnet宥可以使用array_pop();

+0

我没有downvote ...我很感谢你的回答 – Trace 2011-06-08 16:24:35

+0

如果他们想对单个元素的数组进行处理该怎么办?阵列的最后一个元素如何打印出价格? – 2011-06-08 16:30:49

+0

array_pop()...?我相信你知道这个函数存在 – dynamic 2011-06-08 16:32:33

2

考虑你在哪里循环结束的情况下,并没有“next_product”;那么你想怎么做?

可能最好的情况是不要寻找下一个产品,而是存储您处理的最后一个产品,并从那里开始工作。这样,你就没有超越循环过程。

+0

**这有相同的逆问题**。你对循环的第一个元素做了什么?您仍然需要检查两种解决方案。有名誉的人不应该犯这样的错误 – dynamic 2011-06-08 16:15:44

+1

,如果他使用一个以0开始并以n-2结尾的for()循环,那么这根本就不是问题。 @ yes123,我同意。 – Matthew 2011-06-08 16:16:42

+1

...除非事实证明他正在使用非索引数组。所以跳过第一个会更容易。 – Matthew 2011-06-08 16:25:43

1

你可以开始你的循环领先一步的使用持有这样的prevous项目一个临时变量:

$curr = null; 
foreach ($arr as $next) { 
    if (!is_null($curr)) { 
     // your code 
    } 
    $curr = $next; 
} 

有了这第一次迭代被跳过到下一次迭代分配$curr所以$curr实际上是前一个项目。