PHP从数组中获取数据

时间:2013-01-13 15:28:14

标签: php

以下数组包含多个数据数组。一些数据阵列具有字段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
                                )

2 个答案:

答案 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++;
    }
}