foldrr's weblog

旧ブログ http://d.hatena.ne.jp/foldrr/

PHP で関数の戻値をすぐに使ったりコンストラクタの戻値からすぐメソッドを呼ぶ

http://d.hatena.ne.jp/amachang/20090803/1249292858
あーそういう手があったんだ。
amachang さんのは入れ子配列の場合に idx() も入れ子にするみたい。
自分は関数の入れ子が重なると閉じ括弧の数を間違えやすいので、添え字を沢山渡せるようにした。

<?php
function expr(){
    $args = func_get_args();
    $a = $args[0];
    if(sizeof($args) == 1){
        return $a;
    }else{
        if(is_array($args[1])){
            $i = 0;
            $args = $args[1];
        }else{
            $i = 1;
        }
            
        for($n = sizeof($args); $i < $n; $i++){
            $a = $a[$args[$i]];
        }
        return $a;
    }
}
?>