2016-11-02 16 views
0

関数からjsonを返す方法はありません。私が試したコードは次のとおりです。関数からjsonを返し、変数に渡します。

function buildJson(){ 
    ... $json_source is parsed by http (this works) 
    $source = json_decode($json_source, true); 
    $res = $source['child']; 
    echo count($res); // 6 

    return $res; 
    //return json_encode($res); 
} 

////// 

$json_res = buildJson(); 
echo count($json_res); // 0 

for($i = 0; $i < count($json_res); $i++){ 
    $item = $json_res[$i]; 
} 

どのように動作しますか、私はとても多くのことを試みましたが、$ json_resのカウントは毎回0ですか?申し訳ありませんが多くの経験がありません:)

EDIT: "$ json_source"は、関数buildJson()内で生成されます。私はそれが "echo count($ res); // 6"であることをテストしました。関数内の$ resのすべての値にアクセスすることはできますが、戻って外にアクセスすることはできません。だから "$ json_source"は問題ではありません。他のアイデア?

解決済み:これで問題が見つかりました。私はbuildJson()内でbuildJson()を別の時間呼び出すコーディングの理由からこの問題を発見しました。今私は別の方法でそれをコード化し、今動作します。ありがとう@all :)

+0

buildJsonのparamが –

+0

読み取りが欠落しています。http://stackoverflow.com/help/mcve – walther

+0

私はそれがHTTP構文解析の$ json_sourceを提供することはできません。 – Mona935

答えて

0

あなたの関数にパラメータを渡そうとしてください。 あなたはJSON

function buildJson($json_source){ 
    $source = json_decode($json_source, true); 
    $res = $source['child']; 
    echo count($res); // 6 

    return $res; 
    //return json_encode($res); 
} 



$json_res = buildJson($json_source); 
echo count($json_res); // 0 

for($i = 0; $i < count($json_res); $i++){ 
    $item = $json_res[$i]; 
} 
+0

質問を編集しました。問題ではありません。 Jsonがそのように返されるか、この変数を返すために配列のような別の変数にパックされるべきでしょうか?しかし、私はどのように行うのか分からない – Mona935

0

このコードを試してみてくださいためのデータソースを持っていないので、私は働いていないのだと思います。

$json_res = buildJson(); 
$json_res = json_decode($json_res,true); 
    echo count($json_res); 

for($i = 0; $i < count($json_res); $i++){ 
    $item = $json_res[$i]; 
} 
関連する問題