2015-06-06 45 views
1

我需要解釋從遠程許可收到的數組。 我打電話通過捲曲的遠程API,並在瀏覽器中的答案是:獲取一個php數組

的解析,從捲曲的答案用做:

parse_str(curl_exec($ch), $parsed); 
print_r($parsed); 

是完全一樣的位置:

Array ([{"success":true,"uses":154,"purchase":{"id":"GYFt6sW7hbURSVdSpipb5g] => =","created_at":"2015-06-06T16:44:41Z","email":"[email protected]","full_name":"daniel","variants":"","custom_fields":[],"product_name":"Direkt 1.2","subscription_cancelled_at":null,"subscription_failed_at":null}}) 

我已經試了好幾個小時纔得到「成功」項目,以便稍後檢查它是真是假。

我用

while (list($var, $val) = each($parsed)) { 
     print "$var is $val\n"; 
    } 

,但結果是一樣的。

我也試過:

$parsed[0]['success'] or $parsed[0]['success'] 

,並沒有結果也是如此。

我完整的代碼:

<?php $ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, "https://api.gumroad.com/v2/licenses/verify"); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST, true); 
$data = array( 'product_permalink' => 'skQsA', 'license_key' => 'AB26AD9D-1B3B42E0-92356540-CF4E7C1B' ); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
$output = curl_exec($ch); 
$info = curl_getinfo($ch); 


$output = array(); 

parse_str(curl_exec($ch), $parsed); 
print_r($parsed); // HERE WE HAVE THE ARRAY 


while (list($var, $val) = each($parsed)) { 
     // print "$var is $val\n"; 
    } 


curl_close($ch); 

>

謝謝。

+0

而不是'print_r'你可以顯示什麼'var_dump($ parsed);'將ou tput的。 ? –

+0

這是: array(1){[「{」success「:true,」uses「:262,」purchase「:{」id「:」GYFt6sW7hbURSVdSpipb5g「] => string(230)」=「 「created_at」: 「2015-06-06T16:44:41Z」, 「電子郵件」:「電子郵件@ gmail的。com「,」full_name「:」daniel「,」variants「:」「,」custom_fields「:[],」product_name「:」Direct「,」subscription_cancelled_at「:null,」subscription_failed_at「:null}}」} – Danny991

回答

0

該API似乎返回一個JSON編碼的字符串。因此,而不是:

parse_str(curl_exec($ch), $parsed); 

使用:

$parsed = json_decode(curl_exec($ch), true); 

然後,print_r($parsed)將輸出:

Array 
(
    [success] => 1 
    [uses] => 154 
    ... 
) 

和檢查成功值:

if ($parsed['success']) { 
    // Do stuff 
} 
+0

非常感謝。你是對的。有用。 – Danny991

+1

非常感謝。剛剛做到了。 – Danny991

0

而不是做

$parsed[0]['success'];

的嘗試只是

$parsed['success'];

如果您找回數組是一個關聯數組,然後將「鑰匙」將是單詞「成功」。

$parsed = [ 
    "success" => true, 
    "uses" => 154, 
    "purchase" => 
     [ 
     "id" => "GYFt6sW7hbURSVdSpipb5g] => =", 
     "created_at" => "2015-06-06T16:44:41Z", 
     "email" => "[email protected]", 
     "full_name" => "daniel", 
     "variants" => "", 
     "custom_fields" => [], 
     "product_name" => "Direkt 1.2", 
     "subscription_cancelled_at" => null, 
     "subscription_failed_at" => null 
    ]]; 


if($parsed['success']) 
    echo 'true'; 
else 
    echo 'false'; 
+0

你,先生,但是: $解析[「成功」],它說明不了什麼 更好,如果如果我使用 如果($解析[「成功」] ==「真」我可以操縱這種方式,例如 ) //要完成的代碼 其他 //要完成的代碼 – Danny991