2013-04-29 124 views
2

我有一個JSON對象,我從ExtJS接口POSTing到PHP。我從在PHP中訪問JSON對象元素

$json = $_POST["newUserInfo"]; 

對象的對象將包含3個陣列,這點我可以看到,如果我做

var_dump(json_decode($json)); 

我需要每個陣列,並從中建立SQL查詢。我的第一個障礙是將數組從對象中取出,儘管這可能是不必要的。這裏是我工作的代碼塊:

/*Variable passed in from the ExtJS interface as JSON object*/ 
$json = $_POST["newUserInfo"]; 
//$json = '{"USER":{"ID":"","FULL_USER_NAME":"Some Guy","ENTERPRISE_USER_NAME":"guyso01","USER_EMAIL":"[email protected]","USER_PHONE":"123-456-7890"},"PERMISSIONS":{"ID":"","USER_ID":"","IS_ADMIN":"true"},"SETTINGS":{"ID":"","USERS_ID":"","BACKGROUND":"default"}}'; 

//Test to view the decoded output 
//var_dump(json_decode($json)); 

//Decode the $json variable 
$jsonDecoded = json_decode($json,true); 

//Create arrays for each table from the $jsonDecoded object 
$user_info = array($jsonDecoded['USER']); 
$permissions_info = array($jsonDecoded['PERMISSIONS']); 
$settings_info = array($jsonDecoded['SETTINGS']); 

我沒有正確創建數組。我也試過

$user_info = $jsonDecoded->USER; 

而且這也不起作用。我確信我在這裏很容易想到一些事情。同樣,這可能是不必要的,因爲我可能直接訪問它們。我需要通過遍歷數組來構建查詢,並將每個鍵附加到一個字符串,並將每個值附加到一個字符串。所以我最終得到了類似的東西

$query = "INSERT INTO USERS ($keyString) VALUES ($valueString); 

然後,我會重複相同的進程的權限和設置數組。這可能很簡單,但我在這裏卡住了。

+0

你正在從JSON數組,就沒有必要讓它'陣列(陣列( ))' – Amelia 2013-04-29 18:09:17

回答

19

如果使用json_decode($json,true); - true意味着返回JS對象結果作爲關聯數組 - 那麼所有你需要做的就是$user_info = $jsonDecoded['USER'];沒有array()鑄原因是什麼json_decode爲你做。

如果你會選擇忽略第二個布爾參數,那麼你會得到一個stdClass的這$jsonDecoded->USER;會爲工作,你

+0

謝謝@Adidi。我知道這很簡單,我錯過了。現在我可以循環每個數組並調用'array_keys'和'array_values'來獲取查詢字符串的鍵 - >值對。 – ellis 2013-04-29 19:11:23