在foreach中计算结果然后将该值存储在要在别处使用的变量中

时间:2012-12-11 15:29:23

标签: php foreach

如何计算foreach中的结果,然后将该值存储在变量中以用于另一个foreach。

实施例。这个foreach返回5个项目

foreach ($xml->items as $item) {
  echo "$item->name";
  echo "$item->address"; 
}

现在我想要将上面的foreach计算并存储在$ totalitems中并用于另一个foreach。第二个foreach也计算其结果并存储在$ totalitems2中。像这样:

foreach ($xml->items as $item) { //Same source but they will be displayed separately based on a condition.
  echo "$item->name";
  echo "$item->address";
  if_blah_blah_meet_condition_then_break;
}

所以基本上我想要的是限制两个foreach组合显示的项目总数。 $ totalitems和$ totalitems2的总和应为8. 8是我想要限制返回项目的数字。如果其他foreach的物品多于另一个物品则无关紧要。 3和5. 4和4. 6和2.等等。

我怎样才能做到这一点?请指教。

4 个答案:

答案 0 :(得分:3)

只需使用简单的迭代器++方法即可。当您使用第二个foreach时,请注意$i 通过时要停止的号码。

代码:

$i = 0;    
foreach ($xml->items as $item) {
    echo "$item->name";
    echo "$item->address";
    $i++;
}

foreach ($xml->items as $item) {
    echo "$item->name";
    echo "$item->address";

    $i++;
    if ($i > 5) { // or whatever the number is
        break;
    }
}

答案 1 :(得分:1)

$totalItems = count($xml->items);
foreach ($xml->items as $item) {
  echo "$item->name";
  echo "$item->address"; 
}

答案 2 :(得分:0)

只需在循环内的条件中使用count($xml->items)和该值。

答案 3 :(得分:0)

看来你的数组存储在xml->items中,如果你想存储它,你只需将它保存在另一个变量中。

foreach ($xml->items as $cont=>$item) {
  echo "$item->name";
  echo "$item->address"; 

  if($cont<8){
      $totalItems_one[] = $item; 
  }
}

//whatever changes you do to $xml->items

foreach ($xml->items as $cont=>$item) {
  echo "$item->name";
  echo "$item->address"; 

  if($cont<8){
      $totalItems_two[] = $item; 
  }
}

像这样你有两个新的数组totalItems_onetotalItems_two,你可以随时获得正在做count($totalItems_one)count($totalItems_two)的项目数。