揮発性のメモ2

http://d.hatena.ne.jp/iww/

オブジェクトの変数を全部再帰的に表示

<?
$obj = json_decode(file_get_contents($argv[1]));

/** 変数にあった文字列を返す */
function objval($val){
    if( is_null($val) )   return "null";
    if( $val===false )    return "false";
    if( $val===true )     return "true";
    if( is_string($val) ) return "\"$val\"";
    if( is_object($val) ) return "object";
    if( is_array($val) )  return "array";
    return $val;
}

/** 再帰しながらオブジェクトの変数を表示する */
function objprint($objA, $maptext){
    if(is_array($objA)){
        foreach( $objA as $k=>$v ){
            objprint( $objA[$k], "${maptext}[$k]");
        }
    }else if(is_object($objA)){
        foreach($objA as $k => $v){
            objprint($objA->$k, "${maptext}->$k");
        }
    }else{
        $val = objval($objA);
        print("$maptext=$val\n");
    }
}


objprint($obj, "obj");