2012-01-04 7 views
1

JSONオブジェクトを別のページから取得し、それを断片化してPHPドキュメントの変数に値化し、そのページに値を設定しようとしています。php、JSON:PHPで編集できないcURLオブジェクト

私が取り組んでいる問題は、curl_exec呼び出しがJSONオブジェクトを出力している間に、その時点から何もできないということです。以下は私のコードです:ここでは

$json_url = "localhost:8080/query"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 
curl_setopt($ch, CURLOPT_URL, $json_url); 
curl_setopt($ch, CURLOPT_USERPWD, $user.":".$pass); 
$result = json_decode(curl_exec($ch)); 
var_dump ($result); 

$curl_errno = curl_errno($ch); 
$curl_error = curl_error($ch); 

curl_close($ch); 

// ON SUCCESS 

$json_a = $result[10]; 
var_dump ($json_a); 

は結果の一部のサンプルです:

["4"]=> array(2) { [0]=> int(1325003843) [1]=> array(2) { [0]=> int(47) [1]=> array(17) { [0]=> array(2) { [0]=> int(0) [1]=> int(1) } [1]=> array(2) { [0]=> int(17) [1]=> int(44) } [2]=> array(2) { [0]=> int(3) [1]=> int(4) } [3]=> array(2) { [0]=> int(3) [1]=> int(4) } [4]=> array(2) { [0]=> int(3) [1]=> int(4) } [5]=> array(2) { [0]=> int(3) [1]=> int(4) } [6]=> array(2) { [0]=> int(3) [1]=> int(4) } [7]=> array(2) { [0]=> int(3) [1]=> int(4) } [8]=> array(2) { [0]=> int(3) [1]=> int(4) } [9]=> array(2) { [0]=> int(3) [1]=> int(4) } [10]=> array(2) { [0]=> int(3) [1]=> int(4) } [11]=> array(2) { [0]=> int(3) [1]=> int(4) } [12]=> array(2) { [0]=> int(3) [1]=> int(4) } [13]=> array(2) { [0]=> int(2) [1]=> int(3) } [14]=> array(2) { [0]=> int(2) [1]=> int(3) } [15]=> array(2) { [0]=> int(2) [1]=> int(3) } [16]=> array(2) { [0]=> int(2) [1]=> int(3) } } } } 

のvar_dump($結果); int(1)を返し、もう一方のvar_dumpはNULLを返します。 curl_execは実際にJSONオブジェクトを出力するので、少なくともそれを把握していることがわかります。あなたが提供する可能性のあるあらゆる助けをありがとう!

答えて

1

returntransferではなく、スクリプトにそれを返すのクライアントに偽の、カール意志出力結果である場合にも、単に、他の言葉で

$json_url = "localhost:8080/query"; 
// $protocol should be the protocol used, ie. 'ftp://', 'http://' or 'https://' 
// to produce an URL like 'ftp://user:[email protected]:8080/query' 
$result = file_get_contents($protocol . $user.":".urlencode($pass) . '@' . $json_url); 

if($result !== false) { // ON SUCCESS 
    $result = json_decode($result, true); 
    var_dump ($result); 

    if(isset($result[10])) { // If index 10 of $result exists 
    $json_a = $result[10]; 
    var_dump ($json_a); 
    } 
} else { 
    // error occured 
} 
+0

ありがとう!これは上記のコード全体を置き換えますか?また、$プロトコルは何ですか?どうもありがとうございました。私に他の情報が必要な場合はお知らせください。 – prosborne

+0

あなたの '$ json_url'には何が含まれているかによって異なります。上記のコードにvar_dumpsと一緒に含めることができたら、それに応じて私の答えを更新します。 – Flygenring

+0

私は質問を更新し、結果の一部も追加しました。本当に大きなオブジェクトなので、全体を含めるのは難しいでしょう... – prosborne

3

CURLOPT_RETURNTRANSFERをfalseに設定すると、curl_execはtrueまたはfalseのみを返します。 CURLOPT_RETURNTRANSFERをtrueに設定すると、curl_execは結果を返します。

+0

ような何かを行うことができます。 –

+0

よろしくお願い致します。さて、$ chをデコードすると、最初のvar_dumpは "array(2).."を出力し、JSONオブジェクトを配列として出力します。しかし、私の2番目のvar_dumpはNullとして表示されます。 – prosborne

+0

最初のvar_dumpからの出力を投稿できますか? '$ result'のように見えるのは、その中に2つの項目しかない配列なので、参照元はおそらくnullを返すでしょうか? – Flygenring

関連する問題