检测数组中组的最后一个元素

时间:2015-04-07 08:37:33

标签: php arrays foreach grouping

我有一个数组数组。它按子数组中的值分组:

[2  => [id=>5, group=>3],
6  => [id=>8, group=>3],
4  => [id=>1, group=>3],
2  => [id=>11,group=>2],
26 => [id=>41,group=>2],
5  => [id=>55,group=>6],]

foreach周期中,我想知道,当元素是其组中的最后一个元素时。 如果没有第二个foreach周期,我怎么能这样做?

3 个答案:

答案 0 :(得分:0)

试试这个..

    $arr = array(0 => array(id=>1,group=>"1"),
             1 => array(id=>2,group=>"2"),
             2 => array(id=>3,group=>"1")
);
$last=end($arr);
echo $last['group'];

答案 1 :(得分:0)

你不知道什么时候它是最后一个没有得到下一个元素,但你可以确定它何时发生变化所以如果你在foreach循环开始时使用它,你可以在最后一个元素之后采取行动小组:

$group = 0;
foreach ($arr as $key => $value)
{
  if ($group > 0 && $value['group'] !== $group)
  {
    // start of new group, excluding the very first one
    $group = $value['group'];

    // do the things you want to do to separate the groups

  }
  ...
}

答案 2 :(得分:0)

假设数组按组排序,并且在同一组的元素之间没有空格。

$previousGroup = false;
$lastIndex = -1;
foreach($arr as $key=>$value) {
  if($previousGroup !== false && $previousGroup !== $value['group']) {
    echo $lastIndex.' is last index of the group '.$previousGroup;
  }

  //do something

  $previousGroup = $value['group'];
  $lastIndex = $key;
}
if($previousGroup !== false) {
  //handle the last group
  echo $lastIndex.' is last index of the group '.$previousGroup;
}