2013-01-13 204 views
1

以下數組有多個數據數組。某些數據陣列的字段爲message,而另一些則沒有。PHP從數組中獲取數據

我想從具有這些字段的數組中獲得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

如何:

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

我假設 '數據' 是$post陣列的唯一關鍵。

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++; 
    } 
} 
+0

'$ json ['data']'沒有設置。看看原始數組。 – hohner

+0

'$ json ['posts'] ['data']',我的錯誤 –