2012年5月17日木曜日

[PHP] 配列の前のキー、次のキーを取得する

配列で特定のキーの前のキー、もしくは次のキーを取得したい時がある。
キーさえわかってしまえば、前の値や次の値も簡単に取れる。
array_keysを使ってキーだけの配列を作り、
更にキーだけの配列に第二引数つきのarray_keysを使って取得するのもありだとは思うが、
配列が大きい時に、array_keysで更に配列を作ると効率が悪い。
そういう時は素直にforeachで調べるのがベター。

//link・・・http://mio-koduki.blogspot.jp/2012/05/php.html
//第一引数・・・調べたい配列
//第二引数・・・基準となるキー
//返り値・・・調べたい配列の、基準となるキーの前のキーが返る。なければfalse
function prev_key($array,$key)
{
    $tmp=false;
    foreach($array as $k=>$v)
    {
        if($k==$key)
        {
            return $tmp;
        }
        $tmp=$k;
    }
    return false;
}

//link・・・http://mio-koduki.blogspot.jp/2012/05/php.html
//第一引数・・・調べたい配列
//第二引数・・・基準となるキー
//返り値・・・調べたい配列の、基準となるキーの次のキーが返る。なければfalse
function next_key($array,$key)
{
    $tmp=false;
    foreach($array as $k=>$v)
    {
        if($k==$key)
        {
            $tmp=$k;
        }
        elseif($tmp!==false)
        {
            return $k;
        }
    }
    return false;
}

記述的にはarray_keysなどを使ったほうがスマートに見えるが、
処理速度やメモリなどを考慮するとやはりforeachで処理するのがベターだと思う。

0 件のコメント:

コメントを投稿