2017-06-15 16 views
-2

私は多くのソリューションを試しましたが、機能しません。私はPHPで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文字列を送信するためのコードがされています:私の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レコードの数に依存します –

関連する問題