我有一个包含这些值的表单:
$firstName = strip_tags(trim($_POST['first-name']));
$lastName = strip_tags(trim($_POST['last-name']));
$email = filter_var(trim($_POST['user-email']),FILTER_SANITIZE_EMAIL);
我试图将这些值传递给它:
$request_body = json_decode('[{
"first_name" : "Tom",
"last_name" : "Hanks",
"email" : "example@gmail.com"
}]');
尝试将表单值保存到数组并将其传递到 json_decode ,其中$ userArray是表单值,但不是。例如:
$request_body = json_decode($userArray, true);
所有这些都是将这些表单值传递给API(SendGrid),但它不适合我,他们的文档不是很具描述性。我猜他们想要一个特定的请求格式。这是他们的Github页面中的请求主体的示例。我可以将这些值硬编码并且工作正常,但我们的想法是让表单自动传递这些用户名和电子邮件值。
$request_body = json_decode('[
{
"age": 25,
"email": "example@example.com",
"first_name": "",
"last_name": "User"
},
{
"age": 25,
"email": "example2@example.com",
"first_name": "Example",
"last_name": "User"
}
]');
任何想法我做错了什么?谢谢!
答案 0 :(得分:0)
我认为您在使用json_decode()
和json_encode()
时可能会感到有些困惑。
json_encode()
将PHP数组编码为JSON数组。
而json_decode()
将JSON数组解码回PHP数组。
关于您的情况,以下内容应产生相同的输出:
$array = array(
"first_name" => "Tom",
"last_name" => "Hanks",
"email" => "example@gmail.com"
);
echo json_encode($array);
产地:
{"first_name":"Tom","last_name":"Hanks","email":"example@gmail.com"}
使用这些函数构建数组然后对JSON进行编码/解码远比手动创建JSON数组好。因为这可以避免您可能创建的任何语法错误。
希望这有帮助。
答案 1 :(得分:0)
您发送帖子的方式:
$array[0]['email'] = filter_var(trim($_POST['user-email']),FILTER_SANITIZE_EMAIL);
$array[0]['first_name'] = strip_tags(trim($_POST['first-name']));
$array[0]['last_name'] = strip_tags(trim($_POST['last-name']));
echo json_encode($array);
结果:
[{"email":"john.doe@exemple.com","first_name":"John","last_name":"Doe"}]
[0]可能是一个问题,它会产生" [" "]"当你读取json_decode输出并使用json_decode解码时重现完全相同的数组。
因此,如果他们的脚本正在寻找整数作为键,如果省略[0],他们将得到以下格式的数组$ array [' email']等。这可能是一个问题
如果您想在循环中重现它并一次发送多个条目
你可以这样写:
$array[] = array('email' => filter_var(trim($_POST['user-email']),FILTER_SANITIZE_EMAIL),
'first_name' => strip_tags(trim($_POST['first-name'])),
'last_name' => strip_tags(trim($_POST['last-name']))
);
你仍然会错过"年龄"。确保它不是必填字段!