($arrayData);
break;
case "insertion":
insertion_sort($arrayData);
break;
default:
bubble_sort($arrayData);
break;
}
}
?>
可变数量的参数:
php能够把任意数量的参数传递给函数,然后使用func_num_args、func_get_arg和func_get_args取得参数值
复制代码 代码如下:
<?php
function print_parameter_values()
{
$all_parameters = func_get_args();
foreach ($all_parameters as $index => $value)
{
echo "Parameter $index has the value: $value<br/>\n";
}
echo "-----<br/>\n";
}
print_parameter_values(1, 2, 3, "fish");
print_parameter_values();
?>
3.1.3 从函数返回值
一些其他语言把在退出之前只执行一些代码的子例程和执行一引起代码并且把值返回调用者的函数区分开来,php和它们不同,所有php函数在返回调用者时
都有一个值和它相关联。对于没有明确的返回值的函数,返回值为null
复制代码 代码如下:
<?php
function does_nothing()
{
}
$ret = does_nothing();
echo ''$ret: '' . (is_null($ret) ? ''(null)'' : $ret) . "<br/>";
?>
如果希望返回非null时,利用return把它和一个表达式关联
复制代码 代码如下:
<?php
function is_even_number($number)
{
if (($number % 2) == 0)
return TRUE;
else
return FALSE;
}
?>
当你希望从函数返回多个值 时,把结果作为数组传递回来是方便的方式
复制代码 代码如下:
<?php
function get_user_name($userid)
{
//
// $all_user_data is a local variable (array) that temporarily
// holds all the information about a user.
//
$all_user_data = get_user_data_from_db($userid);
//
// after this function returns, $all_user_data no
// longer exists and has no value.
//
return $all_user_data["UserName"];
}
?>
3.1.4 函数内的变量范围
函数级别变量:
声明它们的函数内是合法,并且在函数的调用之间不记忆它们的值
复制代码 代码如下:
<?php
$name = "Fatima";
echo "\$name: $name<br/>\n";
function set_name($new_name)
{
echo "\$name: $name<br/>\n";
$name = $new_name;
}
set_name("Giorgio");
echo "\$name: $name<br/>\n";
?>
静态变量:
static作为前缀的变量在函数调用之间保持它们的值不变,如果声明变量时为其赋值了,在运行当前脚本时,php只在第一次遇到这个变量时执行赋值
复制代码 代码如下:
<?php
function increment_me()
{
// the value is set to 10 only once.
static $incr=10;
$incr++;
echo"$incr<br/>\n";
}
increment_me();
increment_me();
increment_me();
?>
脚本内声明的变量("全局变量")
复制代码 代码如下:
<?php
$name = "Fatima";
echo "\$name: $name<br/>\n";
function set_name($new_name)
{
echo "\$name: $name<br/>\n";
$name = $new_name;
}
set_name("Giorgio");
echo "\$name: $name<br/>\n";
?>
l输出结果:
$name: Fatima
$name:
$name: Fatima
如果在 内部组函数加一个globa ,那么输出结果
$name: Fatima
$name: Fatima
$name: Giorgio
3.1.5 函数范围和可用性
3.1.6 把函数作为变量使用
复制代码 代码如下:
<?php
function Log_to_File($message)
{
// open file and write message
}
function Log_to_Browser($message)
{
// output using echo or print functions
}
function Log_to_Network($message)
{
// connect to server and print message
}
//
// we''re debugging now, so we''ll just write to the screen
//
$log_type = "Log_to_Browser";
//
// now,