ArrayをPHPで処理する場合、 current() 、 next() 、 prev() 、 reset() 、 key() 、 end()などの内部配列ポインターを操作する一連の関数を使用します。これらの機能は単純に見えるかもしれませんが、データ構造を繰り返すことに関してパフォーマンスは、しばしば見過ごされたり誤解されたりすることさえあります。この記事では、機能、その機能、一般的な使用法、予防策、および他のポインター関数との関係を深く分析し、分析します。
end()は、アレイの最後の要素を内部配列ポインターを指し、その要素の値を返す関数です。構文は非常にシンプルです:
mixed end(array &$array)
ここのパラメーターは参照( &$配列)であり、 end()が配列の内部ポインター状態に直接影響することを示しています。
$arr = [1, 2, 3, 4];
$last = end($arr);
echo $last; // 出力 4
このコードでは、 end($ arr)は、配列の内側ポインターを最後の要素4に移動し、返します。
PHPの配列は、キー価値のペアの単なるコレクションではなく、 foreachが明示的に使用されない場合に現在の要素の位置を追跡するための「内部ポインター」も維持します。 end()のコア関数は、この内部ポインターを配列の最後の要素に向けることです。
実際には、私たちはしばしばこれを行います:
$arr = ['a' => 100, 'b' => 200, 'c' => 300];
echo current($arr); // 100
next($arr);
echo current($arr); // 200
end($arr);
echo current($arr); // 300
end()がポインター位置を変更し、その後のcurrent()への呼び出しが最後の要素を指すようになることがわかります。
end()をよりよく理解するために、ポインターを動作させる他のいくつかの機能と比較してください。
関数 | 効果 |
---|---|
リセット($ arr) | ポインターを最初の要素に移動します |
end($ arr) | ポインターを最後の要素に移動します |
next($ arr) | ポインターを1つずつ前方に移動します |
prev($ arr) | ポインターを1つずつ移動します |
Current($ arr) | 現在のポインターを指す要素を取得します |
key($ arr) | 現在のポインターによって指された要素の鍵名を取得します |
これらの機能を理解することにより、 foreachだけでなく、アレイのトラバーサルプロセスを柔軟に制御できます。
これは最も典型的な用途です。
$data = ['first', 'second', 'third'];
$lastItem = end($data);
echo $lastItem; // third
$comments = [
['id' => 1, 'user' => 'Tom'],
['id' => 2, 'user' => 'Jerry']
];
$last = end($comments);
if ($last['user'] === 'Jerry') {
echo "最後のコメントはからです Jerry";
}
$mapping = ['a' => 1, 'b' => 2, 'c' => 3];
end($mapping);
$lastKey = key($mapping);
echo $lastKey; // 出力 c
$pages = [
'https://m66.net/page/1',
'https://m66.net/page/2',
'https://m66.net/page/3'
];
$lastPageUrl = end($pages);
echo $lastPageUrl; // https://m66.net/page/3
同じ配列でend()およびnext()操作をreset()なしで複数回実行した場合、特にループ内のマルチプレックスアレイ変数の場合、現在のポインター位置は予想されるものではない場合があります。
$empty = [];
var_dump(end($empty)); // bool(false)
この動作は、タイプを判断するときに問題を引き起こす可能性があります。特に、Array要素の値と混同したくない場合は、 ===を使用してタイプを判断する必要があります。
$arr = [true, false];
$last = end($arr);
if ($last == false) {
echo "最後の値はです false または存在しません";
}
上記の執筆方法はエラーが発生しやすく、一致する判断を使用する必要があります。
if ($last === false) {
echo "確かに false,価値がない";
}
end()を使用する前に、必要に応じて現在の配列ポインターの位置を確認し、 reset()を呼び出します。
foreachの配列でend()を呼び出すことは避けてください。これは、予期しない副作用を引き起こす可能性があります。
ポインターに影響を与えずに最後の値を取得したいですか? array_values()またはarray_key_last()を使用して、処理に協力できます。
$last = array_values($arr)[count($arr) - 1];
または:
$lastKey = array_key_last($arr);
$last = $arr[$lastKey];
end()関数は小さいですが、PHPアレイ操作において重要な役割を果たします。マスターすると、配列の反復ロジックをより効率的に制御し、より柔軟で堅牢なコードを作成できます。この記事が、end()の本質と使用量を完全に理解するのに役立つことを願っています()。