Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从php中的变量向数组添加字符串:_Php_Arrays_Json_String_Xmlhttprequest - Fatal编程技术网

无法从php中的变量向数组添加字符串:

无法从php中的变量向数组添加字符串:,php,arrays,json,string,xmlhttprequest,Php,Arrays,Json,String,Xmlhttprequest,我是php新手。我一直在尝试用php构建一个数组,并将其编码为JSON。这将使用客户端上的xmlhttprequest接收 但有一个问题。我无法将变量写入数组 这就是我想做的 $name=$_GET['username']; if ( strcmp( $name, 'harry' ) ) { $arr['status'] = 'success'; $arr['name'] = $name; echo json_encode($arr); } 但当我在客户端提出请求时。我得到一个空值

我是php新手。我一直在尝试用php构建一个数组,并将其编码为JSON。这将使用客户端上的
xmlhttprequest
接收

但有一个问题。我无法将变量写入数组

这就是我想做的

$name=$_GET['username'];
if ( strcmp( $name, 'harry' ) ) {
  $arr['status'] = 'success';
  $arr['name'] = $name;
  echo json_encode($arr);
}
但当我在客户端提出请求时。我得到一个空值来代替变量。数组中除此值外的所有其他值都正常

我得到的回复文本是

{"status":"success","username":null}
我在赋值时是否做错了什么


谢谢

发送到客户端的数组中没有“username”键,您应该使用$arr['name']来代替

发送到客户端的数组中没有“username”键,您应该使用$arr['name']来代替

我不知道在这种情况下使用strcmp()的好处,然而,这将纠正您的问题

if ( strcmp( $name, 'harry' ) === 0) {
strcmp()的用法在这里有点违反直觉,因此您可以使用

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

我不知道在这种情况下使用strcmp()有什么好处,但是这会纠正您的问题

if ( strcmp( $name, 'harry' ) === 0) {
strcmp()的用法在这里有点违反直觉,因此您可以使用

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

下面的代码适合我。。。检查一下

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

下面的代码适合我。。。检查一下

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

$arr['username']=$name;您的代码看起来很好。您可以对$\u GET['username']执行回显以检查您是否从请求中获取名称。我尝试了回显$\u GET['username'],但它返回一个空字符串。但是字符串比较if(strcmp($name,'harry'))计算结果为true。这意味着我从客户端获得的字符串是正确的?感谢您使用strcmp($name,'harry')==0,正如itachi所提到的。但问题很明显,您在请求中没有得到任何内容。请尝试使用$arr['username']而不是$arr['name']。我认为问题在于您在数组中混合了密钥。$arr['name']在数组中创建不同于$arr['username']的新元素。您的代码看起来很好。是否可以对$\u GET['username']执行回显以检查是否从请求中获取名称。我尝试了回显$\u GET['username'],但它返回一个空字符串。但是字符串比较if(strcmp($name,'harry'))计算结果为true。这意味着我从客户端获得的字符串是正确的?感谢您使用strcmp($name,'harry')==0,正如itachi所提到的。但问题很明显,您在请求中没有得到任何内容。请尝试使用$arr['username']而不是$arr['name']。我认为问题在于您在数组中混合了密钥。$arr['name']在数组中创建一个与$arr['username']不同的新元素噢,对不起。是的,它显示“name”:null。我如何解决这个问题?谢谢你如何在客户端打印这个数组?你能发布你正在使用的代码行吗?噢,对不起。是的,它显示“name”:null。如何解决此问题?谢谢您如何在客户端打印此数组?您可以发布您正在使用的代码行吗?我正要说同样的话。我看起来根本没有传递“用户名”,因此
strcmp(null,'harry')
计算结果为true。奇怪的是,我得到了int(-5)PHP手册从该函数中指出:如果str1小于str2,则strcmp()返回<0;如果str1大于str2,则返回>0;如果两者相等,则返回0。因此,“true”需要对int(0)进行显式测试两个字符串的结果都是sameI,我想说的是同一件事。我看起来根本没有传递“username”,所以
strcmp(null,'harry')
的计算结果为true。奇怪的是,我从该函数中得到int(-5),不管是哪种方式,PHP手册中都说明:strcmp()如果str1小于str2,则返回<0;如果str1大于str2,则返回>0;如果两者相等,则返回0。因此,需要对int(0)进行显式测试才能获得“true”两个字符串都是sameThank的结果,你们,我发现了问题。是的,我在构建URL时犯了一个错误。感谢所有的帮助谢谢你们,我发现了问题。是的,我在构建URL时犯了一个错误。谢谢所有的帮助