2012-05-17 76 views
0

我是新來的PHP。我一直在嘗試在PHP中構建數組並將其編碼爲JSON。這將在客戶端使用xmlhttprequest接收。無法從php中的變量向數組添加字符串:

但有一個問題。我無法寫入一個變量到數組中。

這就是我想要做的。

$name=$_GET['username']; 
if (strcmp($name, 'harry')) { 
    $arr['status'] = 'success'; 
    $arr['name'] = $name; 
    echo json_encode($arr); 
} 

但是當我在客戶端提出請求時。我得到一個空值來代替變量。除了這個值,數組中的其他數據都很好。

,我得到的迴應文本

{"status":"success","username":null} 

我做得不對的分配值?

謝謝

+0

您的代碼看起來不錯。你可以在$ _GET ['用戶名']上做一個回聲來檢查你是否從請求中獲得了名字。 –

+0

我試過echo $ _GET ['username'],但它返回一個空白字符串。但是字符串比較if(strcmp($ name,'harry'))的計算結果爲true。這意味着我從客戶端獲取字符串的權利? 謝謝 –

+0

使用strcmp($ name,'harry')=== 0由itachi提到。但問題很明顯,你沒有收到任何請求。 –

回答

2

有你發送到客戶端的數組,你應該使用$常用3 [「名」]中沒有「用戶名」鍵代替

+0

的新元素哦,對不起。是的,它顯示「名稱」:null。 我該如何解決這個問題? 謝謝 –

+0

你如何在客戶端打印這個數組?你可以發佈你正在使用的代碼行嗎? –

1

我不知道在這種情況下使用的strcmp()的好處,但是這會糾正你的問題

if (strcmp($name, 'harry') === 0) { 

的strcmp的使用()是有點直覺在這裏,所以你可以使用

if ($name === 'harry') { 
+0

我正要說同樣的話。我看起來好像根本沒有傳遞'username',所以'strcmp(null,'harry')'計算結果爲真。 – Okonomiyaki3000

+0

奇怪的是,我從該函數獲取int(-5),無論是PHP手冊的狀態:_strcmp()如果str1小於str2,則返回<0; >如果str1大於str2,則爲0;如果相等,則爲0。因此,兩個字符串的「真」結果是相同的,需要對int(0)進行顯式測試 – Scuzzy

0

下面的代碼工作對我來說...檢查它

$name=$_GET['username']; 
if(strcmp($name,'harry')==0) 
{ 
$arr['status']= 'success'; 
$arr['name']=$name; 
echo json_encode($arr); 
} 
0
$name=$_GET['username']; 
if (strcmp($name, 'harry')===0) { 
    $arr['status'] = 'success'; 
    $arr['username'] = $name; <---------- changed the index in $arr from 'name' to 'username' 
    echo json_encode($arr); 
} 

strcmp返回0,如果兩個字符串相等(記住它是區分大小寫的

+0

謝謝大家,我找到了問題所在。是的,我在構建URL時犯了一個錯誤。 感謝您的幫助 –