Php 如何检查WPCF7_提交中的WPCF7字段是否为空?
我正在创建一个函数,用于连接到Php 如何检查WPCF7_提交中的WPCF7字段是否为空?,php,wordpress,contact-form-7,Php,Wordpress,Contact Form 7,我正在创建一个函数,用于连接到wpcf7\u mail\u sent以将联系人表单7表单的提交保存到json文件中。我正在用下面的代码提交表单 $submission = WPCF7_Submission::get_instance(); $data = $submission->get_posted_data(); if ( $submission ) { // The rest of the code goes in here } 然后我有一个带有输出数据的数组,在将其转换为j
wpcf7\u mail\u sent
以将联系人表单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:
您是否尝试转储$data var并查看您实际收到的值?因为如果是设置&&!空值应足以过滤掉未考虑的值
您还有另一个备用选项,如下所述:
性能优化的旁注:
使用数组[]=。。。。比array_push快哦,对不起,我在这里键入代码时出错了。我不想用不必要的代码复制粘贴整个函数。更新了问题。我尝试了这个,但在json中仍然显示了大量的'forminput'=>null项。编辑了我的回答是的,但每次我尝试var_dump时,表单get都会在尝试发送时陷入循环。基本上,我可以在写入json文件时看到这些值,这样就可以了。此外,当我填写字段时,它们会被存储,因此$data[$optional_field]也应该可以工作。。。如果有帮助的话,您可以在这里看到生成的JSON:在$data变量中一定有什么东西弄乱了ifs。因为cf7使用AJAX,所以您感觉就像是在循环中获得堆栈。测试var_dump的快速方法是放置一个die();之后立即打开Google Chrome inspect窗口(网络选项卡->XHR子集),您可以查看请求返回的内容,您将了解数据的错误:)