2012-05-17 66 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时犯了一个错误。 感谢您的帮助 –