PHPのforeach文で最初と最後を判別したかったので、備忘録の為に記載。
$array = ['sibuya', 'ebisu', 'meguro', 'gotanda', 'osaki'];
foreach ($array as $key => $value) {
if ($value === reset($array)) {
print "${value}は最初だよ\n";
}
if ($value === end($array)) {
print "${value}最後だよ\n";
}
}
結果
sibuyaは最初だよ
osaki最後だよ
配列要素の最初 sibuya
を2つ用意したらどうなる?
$array = ['sibuya', 'ebisu', 'sibuya', 'gotanda', 'osaki'];
foreach ($array as $key => $value) {
if ($value === reset($array)) {
print "${value}は最初だよ\n";
}
if ($value === end($array)) {
print "${value}最後だよ\n";
}
}
結果
sibuyaは最初だよ
sibuyaは最初だよ
osaki最後だよ
おいおい!笑
配列要素内に重複する値が入ってると予期せぬ動きが・・・
待てよ・・・最後の要素も・・・
配列要素の最後 osaki
を2つ用意したらどうなる?
$array = ['sibuya', 'ebisu', 'osaki', 'gotanda', 'osaki'];
foreach ($array as $key => $value) {
if ($value === reset($array)) {
print "${value}は最初だよ\n";
}
if ($value === end($array)) {
print "${value}最後だよ\n";
}
}
結果
sibuyaは最初だよ
osaki最後だよ
osaki最後だよ
ジーザス・・・
ループ内で reset
や end
を使うのはご法度らしいですね。
https://qiita.com/ay123/items/90d0e107813e00f2b11f