我想为每个for分隔对象名称和值,这是在'ques'数组。
my array as
[
{
"ques": [
{
"name": "comment",
"value": "comment me for the reason",
"sur_id": "1",
"user_id": "admin@gmail.com",
"pagename": "question_response"
},
{
"name": "check-box[]",
"value": "1"
},
{
"name": "radio",
"value": "radio 2"
},
{
"name": "yes",
"value": "no"
},
{
"name": "date",
"value": "2015-10-23"
},
{
"name": "select-deopdown",
"value": ""
},
{
"name": "true",
"value": "false"
},
{
"name": "number",
"value": "55"
}
]
}
]
我想从数组中分离值。现在'answer'返回null
while ($fetch = mysql_fetch_array($query1)) {
$content = $fetch['CONTENT_VALUES'];
// print_r($content);
$content_value= mb_convert_encoding($content ,"UTF-8");
$datas = json_decode($content, true);
foreach($datas->ques as $values)
{
echo $values->value . "'n";
print_r($values);
}
$test[] = array('ques' => $datas ,'answer'=>$values);
}
您正在使用json_decode($content, true);
(请参阅手册),因此这意味着您将获得一个数组,而不是一个对象。要么删除true
,要么将其视为关联数组
foreach($datas[0]['ques'] as $values)
像这样修改代码:
while ($fetch = mysql_fetch_array($query1)) {
$content = $fetch['CONTENT_VALUES'];
$content_value= mb_convert_encoding($content ,"UTF-8");
$datas = json_decode($content); //To return as Object
foreach($array[0]->ques as $values):
echo $values->name.'<br/>'; //For example
endforeach;
}
也许你的真正的问题是,你从来没有在循环中给$test[]
分配任何东西?
无论如何-你是混合对象和数组。如上所述,从json_decode
中删除true
参数。下面的方法对我有用(希望我已经理解了目标是什么):
//test load of the JSON
$content = file_get_contents('test.json');
$test = array();
$datas = json_decode($content);
foreach($datas[0]->ques as $item) {
$test[] = array('ques' => $item->name, 'answer' => $item->value);
}
然后echo '<pre>';
print_r($test);
echo '<pre>';
输出Array
(
[0] => Array
(
[ques] => comment
[answer] => comment me for the reason
)
[1] => Array
(
[ques] => check-box[]
[answer] => 1
)
[2] => Array
(
[ques] => radio
[answer] => radio 2
)
[3] => Array
(
[ques] => yes
[answer] => no
)
[4] => Array
(
[ques] => date
[answer] => 2015-10-23
)
[5] => Array
(
[ques] => select-deopdown
[answer] =>
)
[6] => Array
(
[ques] => true
[answer] => false
)
[7] => Array
(
[ques] => number
[answer] => 55
)
)