【问题标题】:Pass PHP variable to Json将 PHP 变量传递给 Json
【发布时间】:2019-03-11 19:10:34
【问题描述】:

如果我使用 PHP 变量来定义值,以下代码似乎无法正常工作。另一方面,如果我对值进行硬编码,它就可以正常工作。

$body->append('{
    "username": "$username",
    "password": "$password",
    "attributes": {
        "name": "$name",
        "surname": "$surname",
        "email": "$mail"
    }
}');

【问题讨论】:

    标签: php json request postman


    【解决方案1】:

    如果你想在 PHP 中传递字符串中的变量,你必须使用双引号 " 而不是单引号 '

    $foo = "bar";
    echo 'Hello $foo'; // Outputs 'Hello $foo'
    echo "Hello $foo"; // Outputs 'Hello bar'
    

    下面的代码应该可以工作,它是一样的,但用"(而不是')包裹,并用\"转义了原始引号。

    $body->append("{
        \"username\": \"$username\",
        \"password\": \"$password\",
        \"attributes\": {
            \"name\": \"$name\",
            \"surname\": \"$surname\",
            \"email\": \"$mail\"
        }
    }");
    

    但是,这样会变得很混乱,相反,您可以在字符串和变量之间使用. 连接

    '"username": "' . $username . '"
    

    或者只使用DarkBee's solution,这对您的目的来说更优雅。

    【讨论】:

    • json中不能使用单引号
    • @TrueTiem 我的错误,切换到转义双引号 :)
    【解决方案2】:

    创建一个数组,然后 json_encode 将其传递给您的函数

    $data = [
        "username" => $username,
        "password" => $password,
        "attributes" => [
            "name"  => $name,
            "surname"=> $surname,
            "email" => $mail,
        ],
    ];
    $body->append(json_encode($data));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-24
      • 2014-12-06
      • 2016-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多