2016-04-03 44 views
1

我试图解析此JSON字符串解析JSON字符串与多个阵列

$json = {"fields":{ 
"relationshipStatus":[{"fieldId":4,"name":"Committed"},{"fieldId":2,"name":"Dating"},{"fieldId":6,"name":"Engaged"},{"fieldId":3,"name":"Exclusive"},{"fieldId":7,"name":"Married"},{"fieldId":8,"name":"Open Relationship"},{"fieldId":5,"name":"Partnered"},{"fieldId":1,"name":"Single"}], 
      "ethnicity":[{"fieldId":1,"name":"Asian"},{"fieldId":2,"name":"Black"},{"fieldId":3,"name":"Latino"},{"fieldId":4,"name":"Middle Eastern"},{"fieldId":5,"name":"Mixed"},{"fieldId":6,"name":"Native American"},{"fieldId":8,"name":"Other"},{"fieldId":9,"name":"South Asian"},{"fieldId":7,"name":"White"}], 
}} 

使用此foreach循环,最终我想能够采取的数据,并把它们作为一个选择/列表下拉列表形成。

foreach($json['fields'] as $item){ 
    foreach($item['relationshipStatus'] as $relationship){ 
     echo $relationship['name'] . " " . $relationship['fieldId'] . "<br/>"; 
    } 

    foreach($item['ethnicity'] as $ethnicity){ 
     echo $ethnicity['name'] . " " . $ethnicity['fieldId'] . "<br/>"; 
    } 
} 

不管我如何努力拉出来的数据,我不断收到类似的错误:

注意:未定义指数:relationshipStatus在 /Applications/MAMP/htdocs/updateprofile.php上线126警告: /Applications/MAMP/htdocs/updateprofile.php为的foreach()提供在线126

我在做什么错 无效的参数?

+0

描述如果pretty-打印json(即使用jsonlint.com),你会发现数组实际位于'$ json ['fields'] ['relationshipStatus']'下面,而不是在$ json ['fields']'的下面,如你的代码。 – JimL

+0

你绝对正确。 –

回答

1

第一个foreach已经选择relationshipStatusethnicity。也许下面的变化说明我的意思:

foreach($json['fields'] as $key=>$item){ 
if ($key == 'relationshipStatus') 
foreach($item as $relationship){ 
    echo $relationship['name'] . " " . $relationship['fieldId'] . "<br/>"; 
} 
else if ($key == 'ethnicity') 
foreach($item as $ethnicity){ 
    echo $ethnicity['name'] . " " . $ethnicity['fieldId'] . "<br/>"; 
} 
} 
0

在这里,你在迭代你想获取一个错误way.The阵列值JSON Object实际上是$json['fields']['relationshipStatus']下。

var name = $json['fields']['relationshipStatus']['name']; 
var fieldId = $json['fields']['relationshipStatus']['fieldId']; 

=============================== OR =========== =============================

正如A.fink

foreach($json['fields'] as $key=>$item){ 
if ($key == 'relationshipStatus') 
foreach($item as $relationship){ 
    echo $relationship['name'] . " " . $relationship['fieldId'] . "<br/>"; 
} 
else if ($key == 'ethnicity') 
foreach($item as $ethnicity){ 
    echo $ethnicity['name'] . " " . $ethnicity['fieldId'] . "<br/>"; 
} 
}