1

次の配列には複数のデータ配列があります。一部のデータ配列にはフィールドがありますが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
                                )
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'];
   }
}

'data'が$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 に答える