2012-02-15 12 views
0

PHP token_get_all()関数をJSONとして返したいと思います。PHP json_encode token_get_all

また、token_get_allがtoken_name()関数を介してトークンを渡してその名前を取得したいとします。

私はさまざまな方法を試しましたが、必要な結果を得られませんでした。

JavaScriptでこの情報を使用したいと思っています。たとえば、tokens.tokenNameを呼び出すことができます。私はjson_encode()機能を介して直接いるtoken_get_all()関数を入れてみました、だけでなく、様々な配列との結果で遊んできました

{ 

"tokenName":"T_COMMENT","tokenValue":"# some comment","tokenLine":"1" 
"tokenName":"T_VARIABLE","tokenValue":"$some_variable","tokenLine":"2" 
} 

されています

私は、次の例のようなものが必要だと思います私が望んでいたものではない。

これは、コードの最新の化身である:

if (isset($_POST['code']) || (isset($_GET['code']))) { 

    if (isset($_POST['code'])) { 
     $code = $_POST['code']; 
    } elseif (isset($_GET['code'])) { 
     $code = $_GET['code']; 
    } 

    $tokens = array(); 
    $tokenName = array(); 
    $tokenValue = array(); 
    $tokenLine = array(); 

    foreach(token_get_all($code) as $c) { 

     if(is_array($c)) { 
      array_push($tokenName, token_name($c[0])); // token name 
      array_push($tokenValue, $c[1]); // token value 
      array_push($tokenLine, $c[2]); // token line number 

     } else { 
      array_push($tokenValue, $c); // single token, no value or line number 
     } 

    } 

    // put our token into the tokens array 
    array_push($tokens, $tokenName); 
    array_push($tokens, $tokenValue); 
    array_push($tokens, $tokenLine); 

    // return our tokens array JSON encoded 
    echo(json_encode($tokens)); 


} 

は、私はあなたが実際に何をしたいのかと思い、

ライアン

答えて

2

をありがとうは、辞書のリストを生成しています。そのために、あなたはarray_pushの代わりに追加する通常の配列を好む必要があります。

foreach(token_get_all($code) as $c) { 

    $tokens[] = 
     array(
      "tokenName" => token_name($c[0]), 
      "tokenValue" => $c[1], 
      "tokenLine" => $c[2] 
     ); 

} 

はあなたにいくつかの一時変数を保存し、読みやすいです。

+0

ありがとう、それは素晴らしいようです。 :) – ethicalhack3r

関連する問題