我有一个看起来像这样的数组:
$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;
}
想法?
答案 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))
,但即便如此也不一定意味着它是数组的最后一个值(可能有重复)。