如何检查 WPCF7_Submission 内的 WPCF7 字段是否为空?
How do I check if a WPCF7 field is null within WPCF7_Submission?
我正在创建一个挂接到 wpcf7_mail_sent
的函数,以将 Contact Form 7 表单的提交保存到 json 文件。我正在使用以下代码提交表单。
$submission = WPCF7_Submission::get_instance();
$data = $submission->get_posted_data();
if ( $submission ) {
// The rest of the code goes in here
}
然后我有一个包含输出数据的数组,我在将其转换为 json 之前存储所有内容,就像这样。
$output = [
'name' => $data['name']
]
现在我还有可选字段。我将所有这些放在一个数组中,循环遍历它并查看它们是否为空。但不知何故,这不起作用。
$optional_fields = ['subject', 'phone'];
foreach ( $optional_fields as $optional_field ) {
if ( isset($data[$optional_field]) ) {
array_push( $output[$optional_field], $data[$optional_field] );
}
}
无论我尝试 isset()
、!= null
还是只是上面的示例,我总是在输出中得到所有可选字段,以及值为 null 的字段。如何过滤掉不需要的字段?
我不确定我是否理解正确,但因为你发布的数据在这里:
$data = $submission->get_posted_data();
你为什么循环这个:
$optional_fields = ['subject', 'phone'];
foreach ( $optional_fields as $optional_field ) {
...
检查数据是否为空?不应该是:
$data = $submission->get_posted_data();
$optional_fields = ['subject', 'phone'];
foreach ( $optional_fields as $optional_field ) {
if ( isset($data[$optional_field]) && !empty($data[$optional_field]) ) {
array_push( $output[$optional_field], $data[$optional_field] );
}
}
已编辑 1:
您是否尝试过 var_dump $data 变量并查看您实际收到的值?因为 if isset && !empty 应该足以过滤掉不需要的值。
您还有另一个后备选项,此处有描述:Remove empty array elements
性能优化旁注:
https://www.php.net/array-push 使用 array[] =.... 比 array_push
更快
我正在创建一个挂接到 wpcf7_mail_sent
的函数,以将 Contact Form 7 表单的提交保存到 json 文件。我正在使用以下代码提交表单。
$submission = WPCF7_Submission::get_instance();
$data = $submission->get_posted_data();
if ( $submission ) {
// The rest of the code goes in here
}
然后我有一个包含输出数据的数组,我在将其转换为 json 之前存储所有内容,就像这样。
$output = [
'name' => $data['name']
]
现在我还有可选字段。我将所有这些放在一个数组中,循环遍历它并查看它们是否为空。但不知何故,这不起作用。
$optional_fields = ['subject', 'phone'];
foreach ( $optional_fields as $optional_field ) {
if ( isset($data[$optional_field]) ) {
array_push( $output[$optional_field], $data[$optional_field] );
}
}
无论我尝试 isset()
、!= null
还是只是上面的示例,我总是在输出中得到所有可选字段,以及值为 null 的字段。如何过滤掉不需要的字段?
我不确定我是否理解正确,但因为你发布的数据在这里:
$data = $submission->get_posted_data();
你为什么循环这个:
$optional_fields = ['subject', 'phone'];
foreach ( $optional_fields as $optional_field ) {
...
检查数据是否为空?不应该是:
$data = $submission->get_posted_data();
$optional_fields = ['subject', 'phone'];
foreach ( $optional_fields as $optional_field ) {
if ( isset($data[$optional_field]) && !empty($data[$optional_field]) ) {
array_push( $output[$optional_field], $data[$optional_field] );
}
}
已编辑 1:
您是否尝试过 var_dump $data 变量并查看您实际收到的值?因为 if isset && !empty 应该足以过滤掉不需要的值。
您还有另一个后备选项,此处有描述:Remove empty array elements
性能优化旁注: https://www.php.net/array-push 使用 array[] =.... 比 array_push
更快