2015-12-07 48 views
1

我想通過使用json_decode函數來獲取json的所有ids,這個response.How可以只在數組中獲得id嗎?我非常感謝任何幫助。我怎麼能從json_decode中獲取ids php

響應:

{ 
    "columns": [ 
    "name", 
    "id", 
    "sno" 
    ], 
    "data": [ 
    [ 
     "test1", 
     "123", 
     "1" 
    ], 
    [ 
     "test2", 
     "456", 
     "2" 
    ] 
    ] 
} 

代碼:

$obj = json_decode($result, true); 
foreach ($obj as $key => $value) { 
    foreach ($value as $k => $val) { 
     echo $val; 
     if ($k == "id") { 
      array_push($all_ids, $val); 
     } 
    } 
} 
+0

你的報價是一團糟。您需要在Word中退出編輯。 –

+0

你的迴應是無效的json數據,所以json_decode將返回null。 – Andy

+0

很抱歉更新了json響應。 – jason

回答

2
$obj  = json_decode($result); 
$all_ids = array(); 

foreach ($obj->data as $el) { 
    array_push($all_ids, $el[1]); 
} 
+0

謝謝。真棒。 – jason

1

array_map()

$ids = array_map(function($a){return $a[1];}, $obj['data']); 
+0

出現此錯誤:*不能使用類型爲stdClass的對象作爲數組* –

+0

@JayBlanchard您錯過了'true'從'$ obj = json_decode($ result,true);' – Sammitch

+0

複製並粘貼了所有的代碼,包括'真實'在測試中仍然存在錯誤。 'true'返回一個可以像這樣獲取的對象:'$ obj-> data'。在測試完美時改變這一點。 –

2

你可以做到這一點,如下所示,使用in_arrayarray_map

$obj = json_decode($result); 
// identify which column number corresponds to "id" 
$idColumnNo = in_array('id', $obj->columns); 
// collect the elements at that column number from the data array 
$all_ids = array_map(function ($elem) { 
    return $elem[$idColumnNo]; 
}, $obj->data); 
+0

謝謝你。真棒。 – jason