Передать переменную PHP в Json - PullRequest
0 голосов
/ 06 октября 2018

У меня есть следующий код, который, кажется, не работает, если я использую переменную PHP для определения значений.С другой стороны, если я жестко закодирую значения, все будет хорошо.

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

Ответы [ 3 ]

0 голосов
/ 06 октября 2018

Вы не можете получить переменную внутри одинарных кавычек (').Вы можете разделить и получить переменную.

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

Или, если вы хотите получить переменную в другом месте, вы можете использовать что-то вроде

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

И затем заменить {имя} на переменную http://php.net/manual/tr/function.str-replace.php

0 голосов
/ 06 октября 2018

создайте его массив, а затем json_encode, чтобы передать его вашей функции

$data = [
    "username" => $username,
    "password" => $password,
    "attributes" => [
        "name"  => $name,
        "surname"=> $surname,
        "email" => $mail,
    ],
];
$body->append(json_encode($data));
0 голосов
/ 06 октября 2018

Если вы хотите передать переменные внутри строк в 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 , которое немного более элегантно для ваших целей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...