【问题标题】:Not able to add a string to array from a variable in php:无法从 php 中的变量向数组添加字符串:
【发布时间】:2012-05-24 17:22:16
【问题描述】:

我是 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}

我在分配值时做错了吗?

谢谢

【问题讨论】:

  • 您的代码看起来不错。你能在 $_GET['username'] 上做一个回显来检查你是否从请求中获取名称。
  • 我试过 echo $_GET['username'] 但它返回一个空白字符串。但是字符串比较 if ( strcmp( $name, 'harry' ) ) 评估为真。这意味着我正在从客户端获取字符串吗?谢谢
  • 使用 itachi 提到的 strcmp( $name, 'harry' )===0 。但是问题很明显,您在请求中没有得到任何东西。
  • 尝试使用 $arr['username'] 而不是 $arr['name']。我认为问题在于您正在混合数组中的键。 $arr['name'] 在数组中创建一个与 $arr['username'] 不同的新元素

标签: php arrays json string xmlhttprequest


【解决方案1】:

您要发送到客户端的数组中没有“用户名”键,您应该改用 $arr['name']

【讨论】:

  • 哦,对不起。是的,它显示“名称”:null。我该如何解决这个问题?谢谢
  • 你如何在客户端打印这个数组?您可以发布您正在使用的代码行吗?
【解决方案2】:

我不知道在这种情况下使用 strcmp() 的好处,但是这将解决您的问题

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

strcmp() 的用法在这里有点反直觉,所以你可以使用

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

【讨论】:

  • 我正要说同样的话。我看起来根本没有传递“用户名”,所以 strcmp(null, 'harry') 评估为真。
  • 奇怪,我从该函数中得到 int(-5),无论 PHP 手册指出:strcmp() 如果 str1 小于 str2,则返回 如果 str1 大于 str2,则为 0,如果它们相等,则为 0。 因此,对于两个字符串相同的“真实”结果,需要对 int(0) 进行显式测试
【解决方案3】:

以下代码对我有用...检查一下

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

【讨论】:

    【解决方案4】:
    $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(记住它区分大小写

    【讨论】:

    • 谢谢大家,我找到了问题所在。是的,我在构建 URL 时犯了一个错误。感谢大家的帮助
    猜你喜欢
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    相关资源
    最近更新 更多