我正在尝试调用一个在调用时捕获变量值的函数:
功能:
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,而不是其余的。
我完全误解了什么吗?或者代码有问题吗?
感谢
答案 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并为该函数添加右括号(}
)。