2015-11-04 44 views
1

我打電話,返回下面的輸出API:PHP JSON解碼成陣列只是示出第一字符

{"status":"OK","id":"2321","password":"f4f4489dcf95c16a31f9fb4ffff329fc","server":"pptpd"} 

的輸出中下方具有ID值和密碼值。

我編碼在PHP解碼輸出並將此值存儲在SESSION

$update_mk = new \Core\Helpers\Driver; 
$response = $update_mk->addNode($node->getId(),'admin','pass'); 

$decoded = json_decode($response, TRUE); 
// I also tried without the TRUE argument but same result 

$_SESSION['node_id'] = $decoded['id'][0]; 
$_SESSION['mk_password'] = $decoded['password'][0]; 

echo("node_id value: "); 
echo($_SESSION['node_id']); 
echo "\n"; 
echo("mk_password value: "); 
echo($_SESSION['mk_password']); 

我在這裏的問題,它如果我試圖轉儲的價值,它只是表明:

node_id value: 370 mk_password value: f 

只是在展示mk_password的第一個字符

怎麼了?

+1

$ _SESSION [ 'NODE_ID'] = $解碼[ 'ID'] [0];只是刪除[0],你應該準備好去,因爲0它只會採取第一個字符 – Fabio

+0

謝謝@Fabio,noob問題。 –

回答

3

這是因爲您錯誤地訪問它。

什麼是真正回事是:

你的密碼f4f4489dcf95c16a31f9fb4ffff329fc是字符數組。

像這樣$chars[0] = 'f'; $chars[1] = 4; $chars[2] = f;

和你得到f纔剛剛因爲你所訪問的arrayf第一index

,以使其工作,你需要自行分配訪問它的第一個index

這裏是小片段,這將有助於你理解的變量值。

$json = '{"status":"OK","id":"2321","password":"f4f4489dcf95c16a31f9fb4ffff329fc","server":"pptpd"}'; 

$json = json_decode($json, TRUE); 

echo "Status: ".$json['status'].PHP_EOL; 
echo "ID: ".$json['id'].PHP_EOL; 
echo "Password: ".$json['password'].PHP_EOL; 
echo "Server: ".$json['server'].PHP_EOL; 

輸出

Status: OK 
ID: 2321 
Password: f4f4489dcf95c16a31f9fb4ffff329fc 
Server: pptpd 

檢查此Demo

+1

多一點解釋對於一個好的答案來說是很好的,這看起來像是一個評論 – Fabio

+0

哇,所以很抱歉花時間在那。謝謝:) –

+0

@Fabio:當你評論時,我在編輯中間:) – Mubin