Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.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语法帮助检查数组中的多个ID_Php_Arrays_Wordpress - Fatal编程技术网

PHP语法帮助检查数组中的多个ID

PHP语法帮助检查数组中的多个ID,php,arrays,wordpress,Php,Arrays,Wordpress,我正在wordpress中使用联系人表单7,并且必须为表单操作url创建一个自定义挂钩。如果我想检查一个特定的表单“id”是否存在,并且如果存在,则将其发送到另一个url,那么它就可以工作。该代码如下所示: add_filter('wpcf7_form_action_url', 'wpcf7_custom_form_action_url'); function wpcf7_custom_form_action_url($url) { global $wpcf7_contact_form

我正在wordpress中使用联系人表单7,并且必须为表单操作url创建一个自定义挂钩。如果我想检查一个特定的表单“id”是否存在,并且如果存在,则将其发送到另一个url,那么它就可以工作。该代码如下所示:

add_filter('wpcf7_form_action_url', 'wpcf7_custom_form_action_url');

function wpcf7_custom_form_action_url($url)
{
    global $wpcf7_contact_form;

    if ($wpcf7_contact_form->id === 333)
    {
        return 'http://mydomain.com/Leads/';
    }
    else
    {
        return $url;
    }
}
add_filter('wpcf7_form_action_url', 'wpcf7_custom_form_action_url');

function wpcf7_custom_form_action_url($url)
{
    global $wpcf7_contact_form;

    if( !in_array($wpcf7_contact_form->id,array(660, 684, 685, 686)))
    {
        return 'http://mydomain.com/Leads/';
    }
    else
    {
        return $url;
    }
}
但是,我有4个表单,我希望它检查它们是否存在,以将发送到与上面相同的url(其中是我的域url)。如果我尝试添加多个ID,它就会中断。这就是我尝试过的:

add_filter('wpcf7_form_action_url', 'wpcf7_custom_form_action_url');

function wpcf7_custom_form_action_url($url)
{
    global $wpcf7_contact_form;

    if ($wpcf7_contact_form->id === 333 || 334 || 335 || 336)
    {
        return 'http://mydomain.com//Leads/';
    }
    else
    {
        return $url;
    }
}
上面的代码似乎不起作用

我还尝试将其作为如下数组进行检查:

add_filter('wpcf7_form_action_url', 'wpcf7_custom_form_action_url');

function wpcf7_custom_form_action_url($url)
{
    global $wpcf7_contact_form;

    if ($wpcf7_contact_form->id === 333)
    {
        return 'http://mydomain.com/Leads/';
    }
    else
    {
        return $url;
    }
}
add_filter('wpcf7_form_action_url', 'wpcf7_custom_form_action_url');

function wpcf7_custom_form_action_url($url)
{
    global $wpcf7_contact_form;

    if( !in_array($wpcf7_contact_form->id,array(660, 684, 685, 686)))
    {
        return 'http://mydomain.com/Leads/';
    }
    else
    {
        return $url;
    }
}
同样,这似乎是不正确的。有人能看到上面不正确的地方吗。我似乎无法让它工作。

更改:

if ($wpcf7_contact_form->id === 333 || 334 || 335 || 336)
if( !in_array($wpcf7_contact_form->id,array(660, 684, 685, 686)))
关于:

因为您的
if
语句总是
True

更改:

if ($wpcf7_contact_form->id === 333 || 334 || 335 || 336)
if( !in_array($wpcf7_contact_form->id,array(660, 684, 685, 686)))
关于:

因为您的
if
语句总是
True

您的第二次尝试(使用
|
)完全无效。查看PHP的运算符优先级规则:

代码被解析/执行为:

if (($wpcf7_contact_form->id === 333) || 334 || 335 || 336)
    ^--                             ^--
(注意额外的括号)。执行相等测试并返回真/假值,然后使用一系列整数执行逻辑
操作:

0 || 334 || 335 || 336  -> 0 || 351 -> 351 -> true
1 || 334 || 335 || 336  -> 1 || 351 -> 351 -> true
您的in_array()版本是正确的,只是您的
-notting in_数组测试,因此如果检索到的id不是这些值之一,则重定向。如果我没看错你的问题,那与你想要的正好相反。在数组()中使用
,而不是
!在_array()

中,您的第二次尝试(使用
|
)完全无效。查看PHP的运算符优先级规则:

代码被解析/执行为:

if (($wpcf7_contact_form->id === 333) || 334 || 335 || 336)
    ^--                             ^--
(注意额外的括号)。执行相等测试并返回真/假值,然后使用一系列整数执行逻辑
操作:

0 || 334 || 335 || 336  -> 0 || 351 -> 351 -> true
1 || 334 || 335 || 336  -> 1 || 351 -> 351 -> true

您的in_array()版本是正确的,只是您的
-notting in_数组测试,因此如果检索到的id不是这些值之一,则重定向。如果我没看错你的问题,那与你想要的正好相反。在数组()中使用
,而不是
!在_array()

中,您希望使用诸如ID
(660684685686)等检查表单
对吗

如果是这种情况,那么您已经反转了
in\u array
语句(
!in\u array

更改:

if ($wpcf7_contact_form->id === 333 || 334 || 335 || 336)
if( !in_array($wpcf7_contact_form->id,array(660, 684, 685, 686)))
进入


至少,数组中的
是检查多个值的最佳方法。因此,这应该保留在您的最终代码中

您希望使用例如ID
(660、684、685、686)检查表单
对吗

如果是这种情况,那么您已经反转了
in\u array
语句(
!in\u array

更改:

if ($wpcf7_contact_form->id === 333 || 334 || 335 || 336)
if( !in_array($wpcf7_contact_form->id,array(660, 684, 685, 686)))
进入


至少,数组中的
是检查多个值的最佳方法。因此,这应该保留在您的最终代码中

询问者已在_array()中尝试,显然没有成功。他们做错了什么?@StephenTG:我想说var是一个字符串,包含空格?@EliasVanOotegem只是说,如果你要建议“在数组中使用()”,他们已经有了,那么就说他们做错了什么。@StephenTG,看到我的答案了。@StephenTG,我做了一个让人惊讶的梦,并且在你解释之后投了赞成票。与其说我是在寻找原因,不如说我建议,如果答案表明用户已经在做某件事,它应该解释为什么他们做得不对/次优询问者已经在_array()中尝试过,显然没有成功。他们做错了什么?@StephenTG:我想说var是一个字符串,包含空格?@EliasVanOotegem只是说,如果你要建议“在数组中使用()”,他们已经有了,那么就说他们做错了什么。@StephenTG,看到我的答案了。@StephenTG,我做了一个让人惊讶的梦,并且在你解释之后投了赞成票。与其说我在寻找原因,不如说我建议如果一个答案表明用户已经在做什么,它应该解释为什么他们做得不对/次优。我将接受这个答案,因为我是第一个指出倒置阵列的人。CF7是喜怒无常的。在现在的页面上,它挂起了,我只是得到了一个旋转的光标,即使我已经通过contact form 7的附加设置正确添加了重定向(在数据发布到自定义函数url之后)。这些表单只能通过移动设备访问,在这种情况下,我的表单会立即将数据发送到正确的url并返回到正确的成功页面。事实上,我忽略了倒排,这确实是需要解决的问题。我将接受这一点,因为我是第一个指出倒排的人。CF7是喜怒无常的。在现在的页面上,它挂起了,我只是得到了一个旋转的光标,即使我已经通过contact form 7的附加设置正确添加了重定向(在数据发布到自定义函数url之后)。这些表单只能通过移动设备访问,在这种情况下,我的表单会立即将数据发送到正确的url并返回到正确的成功页面。事实上,我忽略了倒排,这确实是需要解决的问题。