2011-05-04 42 views
2

我一直在尝试为网站开发PHP API。我遵循互联网上的教程,工作正常。从PHP对象中提取值

它可以关闭下列URL结构:
http://localhost/mobileapi/search/dostuff/parameter1/parameter2/parameter3/parameter4/json={"name":"jumbo","age":"178","sex":"male"}

Command Object 
(
    [Name] => search 
    [Function] => dostuff 
    [Parameters] => Array 
     (
      [0] => parameter1 
      [1] => parameter2 
      [2] => parameter3 
      [3] => parameter4 
      [4] => json={"name":"jumbo","age":"178","sex":"male"} 
     ) 

) 

我需要做的就是访问这些参数值,一个我一直在试图首先可能是困难一个是JSON。

我至今是:

$params[] = $this->Command->getParameters(); 
    $json = urldecode($params[0][4]); 
    $json = str_replace('json=', '', $json); 
    $json = json_decode($json); 

我提供:

stdClass Object 
(
    [name] => jumbo 
    [age] => 78 
    [sex] => male 
) 

仍然最终被一个对象。

我的最终目标是能够将JSON数据接收到API,然后将其插入到数据库中。我不能为我的生命找出如何在变数等等。把这些最后一个对象的值,并将其储存

谢谢:)

回答

4

这是非常简单的 - 你可以访问这些属性是这样的:

$params[] = $this->Command->getParameters(); 
$json = urldecode($params[0][4]); 
$json = str_replace('json=', '', $json); 
$json = json_decode($json); 

$name = $json->name; 
$age = $json->age; 
$sex = $json->sex; 

这是你想了解的吗?

即使Command参数可以这样访问:

$params = $this->Command->parameters; 

这是由客体的关系标志“->”这是在Java中类似于“.”或.NET做,它会像object->propertyparent->child

+0

正是我想要的。当你知道如何时很容易。谢谢:) – lethalMango 2011-05-04 10:53:27

+0

非常欢迎你! – shadyyx 2011-05-04 10:57:08

0

地址:

if ($json instanceof stdClass) { 
    $json = (array)$json; 
} 
0
$json = '{"name":"jumbo","age":"178","sex":"male"}'; 
$json = (array) json_decode($json); 
echo '<pre>'; 
print_r($json); 
echo '</pre>'; 
0

我完全不明白你想要什么,但看看这代码可以帮助你。我现在写了。它会建立一个MySQL对象的查询:

$a = array(); 
    foreach((array)$json as $key=>$value) 
     $a[] = "$key='$value'"; 
    mysql_query("INSERT INTO sometable SET ".implode(',' $a)); 

不要忘记在你的真实代码中为SQL参数添加一个sanitize调用!

顺便说一句,如果你想json_decode返回数组可以作为第二个参数添加真:

$json_array = json_decode($obj, true);