在数组结束之前做一些事情

时间:2012-12-31 03:55:44

标签: php arrays

我有一个看起来像这样的数组:

$array = array('element1', 'element2', 'element3');

foreach($array as $a){
    echo $a;
}

我需要做的是在数组的最后一个元素之前做一些事情,这样我的回声看起来像这样:

element1,element2,Look Ma!我做了一些事情!,element3。

我想要的是当且仅当我们在数组中的最后一个元素之前JUST时才运行函数,无论大小如何。

我想过使用end($ array);但如果是这样的话呢?

foreach($array as $a){
    if(!end($array)){
        call_func(); // this seems wrong.
    }

    echo $a;
}

想法?

5 个答案:

答案 0 :(得分:4)

尝试:

$last_key = end(array_keys($array));
foreach($array as $key => $a){
    if ($key == $last_key) {
        call_func(); 
    }

    echo $a;
}

或者你也可以,

$array = array('element1', 'element2', 'element3');
end($array);
$last_key = key($array);
foreach($array as $key => $a){
    if ($key == $last_key) {
        call_func(); 
    }

    echo $a;
}

答案 1 :(得分:1)

您可以查看阵列的end()

$lastElement = $currentElement === end($array)

在你的例子中,那就是......

foreach($array as $a){
    if($a === end($array)){
        // Last iteration.
    }

    echo $a;
}

这当然依赖于元素的独特性。否则,您可以使用计数器,或使用密钥并将其与最后一个密钥(end(array_keys($array)))进行比较。

答案 2 :(得分:0)

你可以这样做 -

$array = array('element1', 'element2', 'element3');
$count = count($array)-1;
$loop = 1;
foreach($array as $a){
    echo $a;
    $loop++;
    if($count == $loop)
      echo "You text to be print";
}

答案 3 :(得分:0)

通常我会做类似的事情:

$arrlen = count($array);
foreach($array as $i => $a) {
  if ($arrlen == $i + 1) {
    call_func();
  }
  echo $a;
}

答案 4 :(得分:0)

你的if语句应该是if($a == end($array)),但即便如此也不一定意味着它是数组的最后一个值(可能有重复)。