将PHP变量传递给Json

gig*_*o00 1 php json request postman

我有以下代码似乎不工作,以防我使用PHP变量来定义值.另一方面,如果我硬编码值,它工作正常.

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

Joh*_*han 5

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

$foo = "bar";
echo 'Hello $foo'; // Outputs 'Hello $foo'
echo "Hello $foo"; // Outputs 'Hello bar'
Run Code Online (Sandbox Code Playgroud)

下面的代码应该可以工作,它是相同的,但用"(而不是')包裹,并用\".

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

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

'"username": "' . $username . '"
Run Code Online (Sandbox Code Playgroud)

或者只是使用DarkBee 的解决方案,它更适合您的目的。


Dar*_*Bee 5

制作一个数组,然后将json_encode它传递给你的函数

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