現在の位置: ホーム> 最新記事一覧> end()は、元の配列の順序を変更しますか?

end()は、元の配列の順序を変更しますか?

M66 2025-06-02

PHPで配列を操作する場合、アレイの最後の要素にアクセスする必要があることがよくあります。 end()関数は、これを実現する簡単な方法を提供します。ただし、一部の開発者は、end()が配列の順序を変更するか、実際に使用してアレイに副作用を引き起こすかどうかを心配しています。この記事では、end()の動作を詳細に分析し、実際の使用に関するいくつかの提案を提供します。

1。end ()の役割

end()は、PHPの組み込み配列関数であり、配列の内部ポインターを最後の要素に向け、その要素の値を返します。例えば:

 $array = ['a', 'b', 'c'];
$last = end($array);
echo $last; // 出力:c

2。end ()は配列の順序を変更しますか?

答えは次のとおりです。いいえ

end()関数は、配列の実際の順序を変更せず配列の内部ポインターを単純に移動します。 PHPの配列ポインターメカニズムは、 current()next()prev()reset() 、およびその他の関数を介して制御できるトラバーサル補助ツールです。これらの操作は、配列内の要素のキー価値のペアに影響したり、ストレージ順序を変更したりしません。

これを次のコードで確認できます。

 $array = ['first' => 1, 'second' => 2, 'third' => 3];
end($array);

// 元の配列を印刷します
print_r($array);

出力はまだです:

 Array
(
    [first] => 1
    [second] => 2
    [third] => 3
)

配列の順序はまったく変更されていません。

3。実際の使用で注意すべきこと

end()は配列の順序を変更しませんが、使用する場合は次の点に注意する必要があります。

1。それが変わるのは「ポインター状態」です

end()が呼び出されると、配列の内部ポインターが最初の要素を指しなくします。 current()またはnext()を使用して次にトラバースする必要がある場合は、論理エラーに遭遇する可能性があります。したがって、後でアレイをゼロからトラバースする必要がある場合は、 reset()を呼び出すことを忘れないでください。

 $array = [1, 2, 3];
$last = end($array);
// 最初に再ポイントします
reset($array);

2。空の配列でend()を使用するとfalseが返されます

配列を処理する前に、空のかどうかを判断するのが最善です。

 $array = [];
$last = end($array);

if ($last === false && empty($array) === false) {
    // 配列は空ではありませんが、最後の値は false
}

3。参照で渡された配列にend()を使用しても、配列のコンテンツは変更されません

配列が関数によって参照されている場合でも、 end()は実際のコンテンツを変更せず、ポインターにのみ影響します。

 function getLastElement(&$arr) {
    return end($arr);
}

4.実用的なシナリオの例

たとえば、特定のブログシステム(ドメイン名はM66.net )では、特定の記事分類リストの最後のカテゴリを表示する必要がある場合があります。

 $categories = ['PHP', 'Laravel', 'パフォーマンスの最適化'];
$lastCategory = end($categories);

echo "<a href=\"https://m66.net/category/" . urlencode($lastCategory) . "\">最後のカテゴリ</a>";

出力は次のとおりです。