2012-02-15 4 views
0

Я хочу вернуть функцию PHP token_get_all() как JSON.PHP json_encode token_get_all

Я также хочу, чтобы token_get_all передал токен через функцию token_name(), чтобы получить его имя.

Я пробовал различные методы, но ни один из них не дает результатов, которые мне нужны.

Я хочу использовать эту информацию в JavaScript, я хочу, например, позвонить tokens.tokenName.

Я думаю, что мне нужно что-то вроде следующего примера:

{ 

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

Я пытался поставить функцию token_get_all() непосредственно через функцию json_encode(), а также играть с различными массивами и результаты не то, что я хотел.

Это последнее воплощение кода:

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] 
     ); 

} 

Сохраняет вам несколько временных переменных и легче читать. Это даст вам такой результат, как:

[  
    {"tokenName":"T_COMMENT","tokenValue":"# some comment","tokenLine":"1"}, 
    {"tokenName":"T_VARIABLE","tokenValue":"$some_variable","tokenLine":"2"} 
] 
+0

спасибо, что кажется отлично работает. :) – ethicalhack3r