1

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

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

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

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

element1,element2,看马!我做了点什么!,element3。

我想要的是当且仅当我们在数组中的最后一个元素之前运行一个函数,而不管大小。

我曾想过使用 end($array); 但如果是这样,我会这样做吗?

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

    echo $a;
}

想法?

4

5 回答 5

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;
}
于 2012-12-31T03:58:48.857 回答
1

您可以检查end()您的阵列。

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

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

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

    echo $a;
}

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

于 2012-12-31T03:58:31.113 回答
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";
}
于 2012-12-31T03:58:45.730 回答
0

通常我会做类似的事情:

$arrlen = count($array);
foreach($array as $i => $a) {
  if ($arrlen == $i + 1) {
    call_func();
  }
  echo $a;
}
于 2012-12-31T03:59:15.293 回答
0

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

于 2012-12-31T03:59:19.630 回答