Php 查看循环中的下一个元素

Php 查看循环中的下一个元素,php,arrays,loops,Php,Arrays,Loops,好的,我有这个foreach php循环 <?php foreach($final_products as $product){ ?> 我是这样访问它的 <?php print $product['product_price']; ?> 这很好,但我面临的挑战是如何访问该数组中的下一个元素 <?php print $product['product_price'] + $product["next_product"]['product_price'];

好的,我有这个foreach php循环

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

我是这样访问它的

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

这很好,但我面临的挑战是如何访问该数组中的下一个元素

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

下一个产品只是一个名称,我必须说明,我需要产品阵列价格中的下一个产品,但仍然会继续阵列循环的流程…有什么想法吗


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

为了在数组中最后一个元素的强制转换中安全起见,我添加了for循环。谢谢@KonForce

如果您需要使用数组的最后一个元素,那么您可以使用
array_pop()


使用:
$i+1

为了在数组中最后一个元素的强制转换中安全起见,我添加了for循环。谢谢@KonForce


如果您需要使用数组的最后一个元素,那么您可以使用
array_pop()

考虑这样一种情况,即您处于循环的末尾,并且没有“下一个产品”;那你想做什么


也许最好的情况是不要寻找下一个产品,而是储存你加工的最后一个产品,然后从那里开始工作。这样,您就不会提前完成循环过程。

请考虑这样一种情况,即您处于循环的末尾,并且没有“下一个产品”;那你想做什么


也许最好的情况是不要寻找下一个产品,而是储存你加工的最后一个产品,然后从那里开始工作。这样,您就不会提前循环过程。

您可以提前一步开始循环,并使用一个临时变量来保存前面的项目,如下所示:

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

这样,将跳过第一次迭代以分配
$curr
,因此在下一次迭代中,
$curr
实际上是上一个项目。

您可以提前一步开始循环,使用一个临时变量来保存上一个项目,如下所示:

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

这样,将跳过第一次迭代以分配
$curr
,因此在下一次迭代中,
$curr
实际上是上一项。

数组是如何索引的?它是数值数组还是关联数组?如果是数字数组,则使用for循环代替foreach循环,然后只需对当前键+1即可获得下一个。可能重复的^CachingIterator:)数组如何索引?它是数值数组还是关联数组?如果是数值数组,则使用for循环代替foreach循环,然后只需对当前键+1即可获得下一个。可能的^CachinGitter重复:)这具有相同的反问题。如何处理循环的第一个元素?您仍然需要检查这两种解决方案。有你名气的人不应该犯这样的错误。如果他使用以0开头,以n-2结尾的
for()
循环,这其实根本不是问题@是的123,我同意……但事实证明他使用的是非索引数组。所以跳过第一个会更容易。@yes123:迭代器(foreach)意味着对不确定大小的集合进行顺序迭代;大小可以是零、一或更多。当集合中的元素在它们之间进行交互(“this”->“next”)并且您的分析过程处理顺序处理(foreach)时,您只能处理以前检查过的值。我们在这里讨论的是数组,如果所有键都是顺序的,那么您可以轻松地在数组中检查下一个。如果OP数组键不是int顺序的,我可能同意你的看法,这有同样的反问题。如何处理循环的第一个元素?您仍然需要检查这两种解决方案。有你名气的人不应该犯这样的错误。如果他使用以0开头,以n-2结尾的
for()
循环,这其实根本不是问题@是的123,我同意……但事实证明他使用的是非索引数组。所以跳过第一个会更容易。@yes123:迭代器(foreach)意味着对不确定大小的集合进行顺序迭代;大小可以是零、一或更多。当集合中的元素在它们之间进行交互(“this”->“next”)并且您的分析过程处理顺序处理(foreach)时,您只能处理以前检查过的值。我们在这里讨论的是数组,如果所有键都是顺序的,那么您可以轻松地在数组中检查下一个。如果OP数组键不是int顺序的,我可能同意你的看法。如果它们要在单个元素的数组上进行处理,该怎么办?数组的最后一个元素是如何打印价格的?array_pop()?我相信你知道这个函数存在,如果他们想对单个元素的数组进行处理,该怎么办?数组的最后一个元素是如何打印价格的?array_pop()?我相信你知道这个函数存在