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 に答える