谁能帮我看看下面这一段代码,为什么出错啦!function diGui() {
$a = intval( $a );
$a++;
if ( $a <= 3 ) {
return diGui();
}
return $a;
}
echo diGui();
php递归函数里的变量在下一次调用函数本身的时候也可以使用吗?会不会有作用域的问题?
$a = intval( $a );
$a++;
if ( $a <= 3 ) {
return diGui();
}
return $a;
}
echo diGui();
php递归函数里的变量在下一次调用函数本身的时候也可以使用吗?会不会有作用域的问题?
function diGui($a) {
$a = intval( $a );
$a++;
if ( $a <= 3 ) {
return diGui($a);
}
return $a;
}
echo diGui(1);
<?php
$a=4;
function diGui($value) {
echo $value; if ($value==0) {
return "end";
}
else
{
return diGui($value-1);
}
}
echo diGui($a);?>
一楼这个不错,其实我本来是想详细了解递归函数的用法,对递归函数里变量的作用域不是很明白。
应该跟普通函数差不多咯。假如是下面一段代码呢?(错误貌似很多)function dirSize( $path ) {
// static $dir_size;
$dir_size = floatval( $dir_size );
if ( is_dir( $path ) ) {
$dirHandle = opendir( $path );
while ( ( $dirRead = readdir( $dirHandle ) ) !== false ) {
if ( $dirRead != '.' && $dirRead != '..' ) {
if ( is_dir( $dirRead ) ) {
$path .= "/$dirRead";
closedir( $dirHandle );
dirSize( $path );
}elseif ( is_file( $dirRead ) ) {
$path .= "/$dirRead";
$dir_size += filesize( $path );
$dir_size = round( $dir_size/1024, 2 ).'KB';
closedir( $dirHandle );
}
}
}
}
return $dir_size;
}echo dirSize( 'files' );
函数里定义的变量,只在该函数中有效你 #3 的代码中的 dirSize( $path ); 的返回值被抛弃了,所以你不可能得到正确的结果