我使用 POST 将以下有效负载从 Postman 发送到 PHP 端点:
{
"email": "[email protected]",
"overwrite": true,
"fields": {
"first_name": "John Doe",
"country": "Chile",
"mrc_c3": "25.00",
"mrc_date_c3": "10/10/24"
}
}
在 PHP 脚本中,我有以下代码:
<?php
require_once("db.php");
$payload = json_decode(file_get_contents("php://input"), true)["payload"];
echo "this is the payload: " . $payload[];
?>
正如您在上面看到的,我尝试只回显有效负载数组,但 Postman 只打印出“这是有效负载”而没有其他内容。
如何编辑上述代码,使其显示我从 Postman 发送的有效负载?
我看到两个问题:
首先,您引用了一个名为
payload
的数组键,但您没有任何名为该键的键:
$payload = json_decode(file_get_contents("php://input"), true)["payload"];
^^^^^^^
您可能只想解码整个身体:
$payload = json_decode(file_get_contents("php://input"), true);
然后你会得到:
echo $payload['email']; // [email protected]
echo $payload['fields']['country']; // Chile
其次,这里使用数组大括号是一个语法错误:
echo "this is the payload: " . $payload[];
^^
如果要引用整个数组,只需单独使用
$payload
即可。但是,请注意,您不能只使用 echo
数组,因为 echo
仅适用于标量值。你可以这样做:
$payload = json_decode(file_get_contents("php://input"), true);
print_r($payload);
你会得到:
Array
(
[email] => [email protected]
[overwrite] => 1
[fields] => Array
(
[first_name] => John Doe
[country] => Chile
[mrc_c3] => 25.00
[mrc_date_c3] => 10/10/24
)
)