2011-05-04 87 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);