<div class="codebody" id="code89265"> <?PHP function booo_spooky() { echo "I am booo_spooky. This name is okay! \n"; } function 333434343434334343() { echo <<<DONE I am 333434343434334343. This is an awfully unreadable function name. But it is valid. DONE; } // // This next function name generates: // // Parse error: Syntax error,unexpected T_LNUMBER, // expecting T_STRING in // /home/httpd/www/PHPwebapps/src/chapter03/playing.PHP // on line 55 // // Function names cannot start with numbers // function 234letters() { echo "I am not valid \n"; } // // Extended characters are ok. // function grüß_dich() { echo "Extended Characters are ok,but be careful! \n"; } // // REALLY extended characters are ok too!! Your file will // probably have to be saved in a Unicode format though, // such as UTF-8 (See Chapter 5). // function 日本語のファンクション() { echo <<<EOT Even Japanese characters are ok in function names,but be extra careful with these (see Chapter 5). EOT; } ?>
当你希望从函数返回多个值 时,把结果作为数组传递回来是方便的方式 <div class="codetitle"><a style="CURSOR: pointer" data="75638" class="copybut" id="copybut75638" onclick="doCopy('code75638')">代码如下:<div class="codebody" id="code75638"> <?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"]; } ?>
静态变量: static作为前缀的变量在函数调用之间保持它们的值不变,如果声明变量时为其赋值了,在运行当前脚本时,PHP只在第一次遇到这个变量时执行赋值 <div class="codetitle"><a style="CURSOR: pointer" data="50407" class="copybut" id="copybut50407" onclick="doCopy('code50407')">代码如下:<div class="codebody" id="code50407"> <?PHP function increment_me() { // the value is set to 10 only once. static $incr=10; $incr++; echo"$incr \n"; } increment_me(); increment_me(); increment_me(); ?>
l输出结果: $name: Fatima $name: $name: Fatima 如果在 内部组函数加一个globa,那么输出结果 $name: Fatima $name: Fatima $name: Giorgio 3.1.5 函数范围和可用性 3.1.6 把函数作为变量使用 <div class="codetitle"><a style="CURSOR: pointer" data="76447" class="copybut" id="copybut76447" onclick="doCopy('code76447')">代码如下:<div class="codebody" id="code76447"> <?PHP function Log_to_File($message) { // open file and write message } function Logtobrowser($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 = "Logtobrowser"; // // Now,throughout the rest of our code,we can just call // $log_type(message) and change where it goes by simply // changing the above variable assignment! // $log_type("beginning debug output"); ?>
通过使用这此函数具有一致的名称、参数顺序以及返回值 ,可以显著地减少失败的可能性和代码中的缺陷。 <div class="codetitle"><a style="CURSOR: pointer" data="43594" class="copybut" id="copybut43594" onclick="doCopy('code43594')">代码如下:<div class="codebody" id="code43594"> <?PHP // // all routines in this file assume a circle is passed in as // an array with: // "X" => x coord "Y" => y coord "Radius" => circle radius // function circles_compute_area($circle) { return $circle["Radius"] $circle["Radius"] pi(); } function circles_compute_circumference($circle) { return 2 $circle["Radius"] pi(); } // $circle is passed in BY REFERENCE and modified!!! function circles_move_circle(&$circle,$deltay) { $circle["X"] += $deltax; $circle["Y"] += $deltay; } ?>