在使用PHP变量定义值的情况下,以下代码似乎无法正常工作。另一方面,如果我对值进行硬编码,则效果很好。
$body->append('{
"username": "$username",
"password": "$password",
"attributes": {
"name": "$name",
"surname": "$surname",
"email": "$mail"
}
}');
答案 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