2016-01-21 53 views
0

希望一些可以幫助我弄清楚以下問題..如何處理PHP數組與JSON輸出

我執行以下查詢:

$key = "privatehashere"; 
$query = file_get_contents("https://privateurlhere/?key_id=" . $key . "&paramshere"); 

根據官方文檔,我知道輸出是一個JSON ,這是編碼。所以我對其進行解碼並轉換成PHP數組:

$result = json_decode($query, true); 

在這一點上,當我顯示與<pre>標籤和print_r函數的輸出,我得到的:

Array 
(
    [status] => ok 
    [data] => Array 
     (
      [grp] => Array 
       (
        [0] => Array 
         (
          [number] => 24384 
          [desc] => ENTITY-2 
         ) 

        [1] => Array 
         (
          [number] => 46590 
          [desc] => ENTITY-1 
         ) 

       ) 

     ) 

) 

我需要什麼是將最終值保存到變量中,所以我可以進一步處理它們。所以結果應該是理想的:

$number_0 = "24384" 
$desc_0 = "ENTITY-2" 
$number_1 = "46590" 
$desc_1 = "ENTITY-1" 

感謝您的任何建議/提示。

+0

你能分享一下你試過的嗎? –

+1

這些變量很難稱爲「理想」 –

+1

爲什麼把它們放在標量變量中?他們在一個數組中留下他們並通過處理數組來使用這些值,例如'if($ result ['status'] =='ok'){'如果給變量'$ result'一個更有意義的名字,它會beome自我記錄! – RiggsFolly

回答

2

嘗試

foreach($result['data']['grp'] as $item) 
{ 
    echo 'Number '.$item['number']; 
    echo '<br/>desc '.$item['desc']; 
} 

您也可以直接存儲到這些變量。

$number_0 = $result['data']['grp'][0]['number']; 
$desc_0 = $result['data']['grp'][0]['desc']; 
$number_1 = $result['data']['grp'][1]['number']; 
$desc_1 = $result['data']['grp'][1]['desc']; 

注意:在PHP你不能用數字開始的變量名。像你這樣在這裏$0_number

+1

爲什麼OP要「試試這個」?一個好的答案***將總是解釋所做的事情以及爲什麼這樣做,不僅是爲了OP,而且是爲了將來SO的訪問者。 –

+0

感謝關於變量名稱的說明。我是PHP初學者,我沒有想到這一點。 –

2

我並不是說這種方法是很好的做法,但它是一個直接回答你的問題:

$number_0 = $result['data']['grp'][0]['number']; 
$desc_0 = $result['data']['grp'][0]['desc']; 
$number_1 = $result['data']['grp'][1]['number']; 
$desc_1 = $result['data']['grp'][1]['desc']; 

如果你想從數組動態分配的變量,你可以這樣做:

foreach($result['data']['grp'] as $k => $v) 
{ 
    ${'number_'.$k} = $v['number']; 
    ${'desc_'.$k} = $v['desc']; 
} 
+0

你在上面的代碼中有'SYNTAX'錯誤。 – Hassaan

+0

@JayBlanchard PHP解析錯誤:語法錯誤,意外'0'(T_LNUMBER),期待變量(T_VARIABLE)或'$'',一個php變量不能以數字開頭 –

+0

謝謝。猜猜我想變得有點太快。更新它。 – Rein

0

好像你檢索你的數組。 現在形成你所需的變量。 您無法使用數字值啓動您的變量。相反,我們形成它像這樣$subKey_mainKey例如。 $number_0;

$getDetails[0] = array("number"=>24384, "desc"=>"ENTITY-2"); 
$getDetails[1] = array("number"=>46590, "desc"=>"ENTITY-1"); 
foreach($getDetails as $indKey=>$indArray) { 
    foreach($indArray as $indNKey=>$indNVal) { 
     $createVar = $indNKey."_".$indKey; 
     $$createVar = $indNVal; 
    } 
} 
echo $number_0; 
+0

這不是我正在尋找的,但非常感謝變量名稱。正如我上面提到的,我是PHP初學者,我沒有想到這一點。根據我的理解, –

+0

我回答得最好。所以如果您向我簡要介紹一下您的要求,我會給您提供最佳解決方案。感謝和歡呼。 – ameenulla0007