リストや配列の後ろから二番目の要素を取り出すとき、Python1やPerl2だとlist[-2]
といった形で指定できますが、PHPだとどうするのだろうと調べたメモ。
結果として、Qiitaに既に良記事があったため解決しました。
おわりです。
試行錯誤
ここは自分で無い知恵絞っていたときの形跡を記録しておきます。
<?php
error_reporting(-1);
$a = range('a', 'z');
// 連想配列でなければ、添字にcount()の結果を使えば良さそう。
if (isset($a)) {
$c = count($a);
if ($c >= 2) {
// インデックス配列であること
if (array_values($a) === $a) {
print $a[ $c - 2 ].PHP_EOL;
//#=> y
}
}
}
<?php
error_reporting(-1);
$a = array(
'ド' => 'ドーナッツ',
'レ' => 'レモン',
'ミ' => 'みんな',
'ファ' => 'ファイト',
'ソ' => 'あおいそら',
);
// ポインタ移動させていいならendしてprevが連想配列でも動くから良さそう。
if (isset($a)) {
if (count($a) >= 2) {
end($a);
print prev($a).PHP_EOL;
//#=> ファイト
}
}
「末尾からふたつ前の要素」って言われたらもう一回prevする。