1

以下数组有多个数据数组。一些数据数组有 field message,而另一些则没有。

我想从具有这些字段的数组中获取messagecreated_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
                                )
4

2 回答 2

2

怎么样:

foreach ($json['posts']['data'] as $postKey => $post) {
   if (isset($post['message']) {
      echo $post['message'];
   }
   if (isset($post['created_time']) {
      echo $post['created_time'];
   }
}

我假设“数据”是$post数组的唯一键。

于 2013-01-13T15:30:58.880 回答
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++;
    }
}
于 2013-01-13T15:32:10.097 回答