PHPで配列の末尾からひとつ前の要素を取り出す

  • 0
    いいね
  • 0
    コメント
    この記事は最終更新日から1年以上が経過しています。

    リストや配列の後ろから二番目の要素を取り出すとき、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する。

    参考や注釈