2016-07-22 133 views
0

我有一個腳本從外部API中提取數據。輸出示例如下。從JSON數組獲取特定數據。 [PHP]

[{"id": "579144bbfbd8f54f53f5394b", "username": "test1", "type": "1", "email": "[email protected]", "status": on},{"id": "afadfatqwertqr", "username": "test2", "type": "1", "email": "[email protected]", "status": on}] 

我想單獨從字符串中將id設置爲一個變量。它也必須是用戶名特定的,但任何支持將不勝感激。一直在絞盡腦汁,先謝謝了!

+1

不使用正則表達式,如果它的json字符串,使用'json_decode'。使用適當的工具,而不是正則表達式 – Ghost

+1

建議使用'json_decode' –

回答

0
$usernameToFind = 'something'; 

然後,你需要打電話給你的API獲得JSONResponse;

$arr = json_decode($yourJSON, true); 

那麼你$arr將包含所有數據對象的數組。您可以訪問如下:

$username = array(); 

$len = count($arr); 
for($i = 0; $i < $len; $i++){ 
    $id = $arr[$i]["id"]; 
    $uname = $arr[$i]["username"]; 
    $username[$uname] = $id; 
} 

這個循環中,你可以得到你想要的基於用戶名尋找鑑於usernameToFind該數組中存在的任何ID後面。檢查你是否可以使用:

if(isset($username[$usernameToFind])){ 
    $idToFind = $username[$usernameToFind]; 
}else{ 
    echo "this user doesn't exist"; 
} 
+0

你檢查了這個代碼與他的字符串? –

+0

這工作,我將如何去基於用戶名值從ID獲取?非常感謝。 –

+0

@JayC實際上你不需要它們,因爲它們在數組的相同索引中。你可以考慮同一個對象的屬性。因此,當您訪問索引0的id時,您實際上正在訪問索引0中的對象的用戶名的id。也許我沒有很好地理解您的問題。 –