2013-04-29 96 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