为什么以下脚本不起作用?
$arr = array();
function collect( $array , $val) {
$array[] = $val;
return $array;
}
function checkFoo( $s ) {
$valid = true;
if ( strlen( $s ) === 0 ) {
$isValid = false;
collectFoo( $arr , $s );
}
return $valid;
}
function checkBar( $t ) {
$valid = true;
if ( strlen( $s ) != 10 ) {
$isValid = false;
collectFoo( $arr , $t );
}
return $valid;
}
if ( checkFoo( $that ) && checkBar( $this ) ) {
echo "success";
} else {
print_r( $error );
}
我总是得到
Notice: Undefined variable: error in /my.php on line 12
第12行类似于collect(...)
的第二次出现;
我知道一个函数只能返回一个值,但是如果一个函数返回一个返回某个东西的函数呢?由于collect
会在$array
内返回返回checkBar
的{{1}}。
答案 0 :(得分:1)
您正在使用全局变量($ arr),因此您需要将其声明为此类。例如:
function checkFoo( $s ) {
global $arr; // declare $arr to be usable inside this function scope
$valid = true;
if ( strlen( $s ) === 0 ) {
$isValid = false;
collectFoo( $arr , $s );
}
return $valid;
}
答案 1 :(得分:0)
<强>被修改强>
您需要更多练习,因为您的代码完全不正确! 您必须更改代码的这些部分:
$arr = array();
function collectFoo( $arr , $val) {
global $arr;
$arr[] = $val;
}
function checkFoo( $s ) {
global $arr;
$valid = false;
if ( strlen( $s ) === 0 ) {
$valid = false;
collectFoo( $arr , $s );
}
return $valid;
}
function checkBar( $t ) {
global $arr;
$valid = true;
if ( strlen( $t ) != 10 ) {
$valid = false;
collectFoo( $arr , $t );
}
return $valid;
}
$a = checkFoo( $that );
$b = checkBar( $this );
if ( $a && $b ) {
echo 'Success !';
} else {
print_r( $err );
}
答案 2 :(得分:0)