将PHP变量传递给Json

时间:2018-10-06 13:59:58

标签: php json request postman

在使用PHP变量定义值的情况下,以下代码似乎无法正常工作。另一方面,如果我对值进行硬编码,则效果很好。

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

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:4)

如果要在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,这对于您的目的来说更优雅。

答案 2 :(得分:1)

您不能在单引号(')内获取变量。您可以拆分并获取变量。

'..."name": "'.$name.'",...'

或者,如果您想在其他地方获取变量,则可以使用类似的

'..."name": "{name}",...'

然后将{name}替换为变量http://php.net/manual/tr/function.str-replace.php