PHPでは、 end()と各()は、通常配列操作とトラバーサルに関連する2つの非常に一般的な関数です。 foreachは、最も一般的に使用される配列トラバーサル方法ですが、ポインター関数を使用して、 foreachのようなトラバーサル挙動をシミュレートすることもできます。今日、 end()と各()を使用して、 foreachのトラバーサルプロセスを模倣する方法について説明します。
end()関数は、配列の内部ポインターを配列の最後の要素に移動し、その要素の値を返すために使用されます。これにより、配列自体を変更せずに配列の最後の要素にアクセスできます。
例:
$array = [1, 2, 3, 4];
echo end($array); // 出力 4
各()関数は、アレイ内の現在のキー値ペアを返し、内部ポインターを1つずつ移動します。キー名とキー値を含む配列(キーと値)を返します。内側のポインターが配列の最後の要素に移動されると、各()を呼び出すと再びfalseが返されます。
例:
$array = [1, 2, 3, 4];
print_r(each($array)); // 出力: Array ( [0] => 1 [value] => 1 [key] => 0 )
foreachは、PHPで配列を通過する一般的な方法ですが、配列ポインターを介してトラバーサルプロセスを手動で制御する場合は、 end()と各()を介してこのトラバーサル挙動をシミュレートできます。
配列の初期化:最初に、トラバースする配列が必要です。
end()を使用して、配列の最後の要素を見つけます。End ()関数を呼び出すことにより、配列ポインターを見つけます。
各()を使用して配列をトラバースします。各()がfalseを返すまで各( )の配列を反復し、配列トラバーサルが完了したことを示します。
<?php
$array = [1, 2, 3, 4, 5];
// ポインターを配列の最後の要素に移動します
end($array);
// シミュレーション foreach トラバーサル
while ($element = each($array)) {
echo "鍵: " . $element['key'] . ",価値: " . $element['value'] . "\n";
}
?>
end($ array) :配列の内側ポインターを配列の最後の要素に移動します。
それぞれ($ array) :配列の現在の要素のキー値ペアを返し、ポインターを次の要素に移動します。
while loop :各()がfalseを返すまで、配列を繰り返し続けます。
end()と各()を使用することにより、配列ポインターを介してアレイを手動でトラバースすることができ、 foreachのような機能を達成できます。ほとんどの場合、 foreachはより簡潔で効率的ですが、 end()と各()は、配列ポインターの動きをより柔軟に制御したい場合は、興味深い代替手段を提供します。
追加のメモ:
この記事では、使用した各()関数はPHP 7.2.0で放棄されており、PHP 8.0で完全に削除されています。したがって、PHPのより高いバージョンを使用している場合、他の方法を使用して、 foreachやループなどの配列を繰り返す必要があります。