Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检查WPCF7_提交中的WPCF7字段是否为空?_Php_Wordpress_Contact Form 7 - Fatal编程技术网

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子集),您可以查看请求返回的内容,您将了解数据的错误:)