2017-06-15 121 views
-2

我已經嘗試了許多解決方案,但都沒有工作。我想在PHP中迭代json數組。以下是我的JSON字符串:如何在PHP中迭代JSON數組?

{ 
    "0": 
    { 
     "problem_id":"13", 
     "onset_date":"2011-02-07", 
     "status":"Active", 
     "operator":"", 
     "problem_name":"Allergic Conjunctivitis (372.05)" 
    }, 
    "1": 
    { 
     "problem_id":"132512", 
     "onset_date":"2017-06-12", 
     "status":"Active", 
     "operator":"", 
     "problem_name":"diabetes macular edema - 10" 
    }, 
    "pbids": 
    { 
     "0":"13", 
     "1":"132512" 
    } 
} 

以下是JSON字符串發送到服務器的代碼:

var finalArrayString = JSON.stringify(convertFormDataToJSONArray()); 
try{ 
    alert(JSON.parse(finalArrayString)); 
    alert(true); 
}catch(e){ 
    alert(false); 
} 
alert(finalArrayString); 
$.ajax({ 
    url: "index.php", 
    type: 'POST', 
    data: {problems: finalArrayString}, 
    beforeSend: function() {}, 
    success: function(returnedData) { 
     alert(returnedData); 
    }, 
    error: function(jqXhr, textStatus, errorThrown){ 
     alert(errorThrown); 
    } 
}); 

以下是我的PHP代碼:

if ($_POST['problems'] && $_POST['problems'] != "") { 
    $problems = $_POST['problems']; 
    foreach ($problems as $key) { 
     echo $key; 
    } 
} 

但不打印輸出。我還檢查了json字符串是否有效,使用JSON.parse(),但它返回true。

+0

'var_dump($ problems)'的輸出是什麼? –

+3

'$ problems = json_decode($ _ POST ['problems'],true);' – Steve

+0

你的「數組」看起來不像我的數組。它沒有方括號。 http://www.json.org/ –

回答

4

您需要先解碼JSON。

if ($_POST['problems'] && $_POST['problems'] != "") { 
    $problems = json_decode($_POST['problems']); 
    foreach ($problems as $key) { 
     var_dump($key); // This should print an object out that is key/val'd 
    } 
} 

文檔可以在PHP.net

-1
$json = '[{"var1":"9","var2":"16","var3":"16"},{"var1":"8","var2":"15","var3":"15"}]'; 

$陣列= json_decode($ JSON,真)中找到; print_r($ array);

+0

但是該數組不是靜態的,它取決於db記錄的數量 –