问题在PHP中调用函数

时间:2011-11-09 18:46:50

标签: php

我正在尝试调用一个在调用时捕获变量值的函数:

功能:

function check_input_data($INCLUDE_DISABLEDd_types = '', $field1 = '', $field2 = '', $field3 = '', $field4 = '', $field5 = '', $field6 = '', $field7 = '', $field8 = '')
{
    if ( !empty( $INCLUDE_DISABLEDd_types ) )
    {
        global $field1, $field2, $field3, $field4, $field5, $field6, $field7, $field8, $field_1_status, $field_2_status, $field_3_status, $field_4_status, $field_5_status, $field_6_status, $field_7_status, $field_8_status;
        if ( $INCLUDE_DISABLEDd_types == 'email_u' )
        {
            echo "It's noticed the INCLUDE_DISABLEDd var";
            if ( !empty( $field1 ) )
            {
                //I'll tell you what to do later
            }
            if ( !empty( $field2 ) )
            {
                echo $field2;
                if ( preg_match( "/[^-a-z0-9_]/i", $field2 ) )
                {
                    $field_2_status = true;
                    $ff = "good input?";
                }
                else if ( !preg_match( "/[^-a-z0-9_]/i", $field2 ) )
                {
                    $field_2_status = true;
                    $ff = "bad input?";
                }
                else
                {
                    $ff= "something is wrong with preg match";
                }
                echo $ff;
            }
        }
    }
}

好的,你可以看到,该函数只会查找3个不同的变量(现在)。如果找到它们,它会做一些事情。

现在这里是调用函​​数:

check_input_data ('email_u', 'test1', 'LOOK FIELD TWO IS HERE');

现在,函数调用中的第一个变量是$included_types $field1的第二个变量,$field2的第三个变量。

出于某种原因,检测到$included_types值的第一个var(email_u),但其余的($field1$field2)不是。< / p>

我知道检测到第一个var($included_types)的原因是因为它回显了“它注意到了包含的var”。

正如你所看到的,我有一个if语句来检查$field2是否为空,如果不是,那么我告诉它回应var。现在它没有执行任何代码,因为它认为$field2是空的(当它没有时)所以我然后更改if语句来执行任务,如果它是空的并且它执行它但它回显$field2绝对没有,所以我知道它不是空功能。

它以某种方式认为$field2是空的。

我也尝试过为所有变量提供值:

check_input_data ('email_u', 'test1', 'LOOK FIELD TWO IS HERE', 'test', 'test', 'test', 'test', 'test', 'test');

但它仍然只能获得第一个var,而不是其余的。

我完全误解了什么吗?或者代码有问题吗?

感谢

4 个答案:

答案 0 :(得分:1)

if (!empty($field1

应该是

if (!empty($field1)) {

清理你的代码,但我发现你已经解决了这个问题。

<?php

function check_input_data($type = '', $field1 = '', $field2 = '') {

    if (!empty($type)) {
        if ($type == 'email_u') {
            if (!empty($field1)) {
                //I'll tell you what to do later
            }

            if (!empty($field2)) {
                echo $field2;

                if (preg_match("/^[_a-zA-Z0-9-]+$/", $field2)) {
                    $field_2_status = TRUE;
                    $ff = "Good input?";
                } else {
                    $field_2_status = FALSE;
                    $ff = "Bad input?";
                }

                echo $ff;
            }
        }   
    }
}

check_input_data('email_u', 'test', 'test');

答案 1 :(得分:0)

从全局变量范围中删除$ field1和$字段,并正确检查if条件。如果不工作发布完整的代码。然后我们才能帮助你

答案 2 :(得分:0)

删除全局行,它应该可以工作。

一般来说,根本不使用全局变量被认为是不好的做法,你应该将它们作为参数传递给函数(就像你已经做过的那样)。

答案 3 :(得分:0)

删除global $field1, $field2, $field3, $field4, $field5, $field6, $field7, $field8, $field_1_status, $field_2_status, $field_3_status, $field_4_status, $field_5_status, $field_6_status, $field_7_status, $field_8_status;,如果不是拼写错误,请更新@John Svensson并为该函数添加右括号(})。