PHPで配列を操作する場合、アレイの最後の要素にアクセスする必要があることがよくあります。 end()関数は、これを実現する簡単な方法を提供します。ただし、一部の開発者は、end()が配列の順序を変更するか、実際に使用してアレイに副作用を引き起こすかどうかを心配しています。この記事では、end()の動作を詳細に分析し、実際の使用に関するいくつかの提案を提供します。
end()は、PHPの組み込み配列関数であり、配列の内部ポインターを最後の要素に向け、その要素の値を返します。例えば:
$array = ['a', 'b', 'c'];
$last = end($array);
echo $last; // 出力:c
答えは次のとおりです。いいえ
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
)
配列の順序はまったく変更されていません。
end()は配列の順序を変更しませんが、使用する場合は次の点に注意する必要があります。
end()が呼び出されると、配列の内部ポインターが最初の要素を指しなくします。 current()またはnext()を使用して次にトラバースする必要がある場合は、論理エラーに遭遇する可能性があります。したがって、後でアレイをゼロからトラバースする必要がある場合は、 reset()を呼び出すことを忘れないでください。
$array = [1, 2, 3];
$last = end($array);
// 最初に再ポイントします
reset($array);
配列を処理する前に、空のかどうかを判断するのが最善です。
$array = [];
$last = end($array);
if ($last === false && empty($array) === false) {
// 配列は空ではありませんが、最後の値は false
}
配列が関数によって参照されている場合でも、 end()は実際のコンテンツを変更せず、ポインターにのみ影響します。
function getLastElement(&$arr) {
return end($arr);
}
たとえば、特定のブログシステム(ドメイン名はM66.net )では、特定の記事分類リストの最後のカテゴリを表示する必要がある場合があります。
$categories = ['PHP', 'Laravel', 'パフォーマンスの最適化'];
$lastCategory = end($categories);
echo "<a href=\"https://m66.net/category/" . urlencode($lastCategory) . "\">最後のカテゴリ</a>";
出力は次のとおりです。