以下数组包含多个数据数组。一些数据阵列具有字段message
,而其他数据阵列则没有。
我想从包含这些字段的数组中获取message
和created_time
字段。
我可以在没有循环的情况下获取数据,例如:
$msg = $json['posts']['data'][0]['message'];
但是如何使用循环并从具有该字段的所有数组中获取消息字段。
Array
(
[id] => 1234
[posts] => Array
(
[data] => Array
(
[0] => Array
(
[id] => 123_456
[from] => Array
(
[name] => User Name
[id] => 123
)
[message] => This is the message i want to get.
[privacy] => Array
(
[value] =>
)
[type] => status
[status_type] => mobile_status_update
[created_time] => 2013-01-13T11:09:55+0000
[updated_time] => 2013-01-13T11:09:55+0000
[comments] => Array
(
[count] => 0
)
答案 0 :(得分:2)
怎么样:
foreach ($json['posts']['data'] as $postKey => $post) {
if (isset($post['message']) {
echo $post['message'];
}
if (isset($post['created_time']) {
echo $post['created_time'];
}
}
我假设'data'是$post
数组的唯一键。
答案 1 :(得分:2)
您必须确保$data['message']
isset()。如果是,我认为$data['created_time']
也存在,所以不需要检查它是否被设置。
$messages = array();
$x = 0;
foreach($json['posts']['data'] as $data){
if($mes = isset($data['message'])){
$message[$x]['message'] = $mes;
$message[$x]['created_time'] = $data['created_time'];
$x++;
}
}