php中的函數

一、函數

一部分可重復執行的代碼段,多次執行,一次編譯

特點:
 1.減少程序運行的復雜性
 2.提高程序的可靠性
 3.提高函數的開發效率
 4.提高程序的維護性
 5.提高程序的重復性
語法
1.帶參數的函數
function fun(參數1,參數2){
                  
 }

 function sayName($name,$age,$city){
    echo "你的名字:<span style='color:#f00 '></span>".$name.',你的年齡:'.$age.'你所在的城市:'.$city;
               }
sayName('張三',18,'北京');
帶返回值的函數
2.帶返回值的函數
 function fun(參數1,參數2){
     return 
}
檢測函數是否存在:
 function_exists(函數名);


function fun($a,$b){
  return $a+$b;
}
echo fun(3,5);
檢測一個函數是否存在
   function_exists(‘函數名’);
使用var_dump();輸出,會得到一個布爾類型的值,true或false

var_dump(function_exists('fun'));

二、函數的作用域

$bbs='百度';
function fn1(){
    echo $bbs;
}
fn();//會報undefined

在函數內是訪問不到函數外的變量的
function fn(){
   $bbs='www.baidu.com';
}
fn();
echo $bbs;

在函數外也是訪問不到函數內的變量的

如果我們現在想訪問函數內的變量,這時候就需要借助關鍵詞global了

global關鍵詞用于訪問函數內的全局變量
$bbs='百度';
function fn3(){
  global $bbs;
   $bbs='www.baidu.com';
  echo '函數內'.$bbs;//www.baidu.com
}
fn3();
echo '函數外'.$bbs;//www.baidu.com
卸載一個函數
$bbs='百度';
function fn3(){
  global $bbs;
  $bbs='www.baidu.com';
  unset($bbs);//卸載一個函數
  echo '函數內'.$bbs;
}
fn3();
echo '函數外'.$bbs;//www.baidu.com

即使把函數卸載了我們發現在函數外輸出的熱然是 'www.baidu.com'
靜態變量 static:
作用:
1.是在所有對函數調用中共享
2.只有在第一次調用時賦值
function fn(){
   $i=1;
   $i++;
   echo $i;
}
fn();//2
fn();//2
fn();//2
fn();//2
fn();//2

我們發現反復調用函數,輸出的都是2
如果我們想輸出2,3,4,5那么我們就需要做如下改變

function fn(){
   static $i=1;
   $i++;
   echo $i.'<br>';
}
fn();
fn();
fn();
fn();
fn();

三、按值傳遞與按址傳遞

按值傳遞
function eat($name){
        $name=$name.'女士';
        echo $name.'在吃飯<br>';
}
$name='小張';
eat($name);
 echo $name;
按址傳遞
function eat(&$name){
   $name=$name.'女士';
   echo $name.'在吃飯<br>';
}
 $name='小張';
eat($name);
echo $name;

四、在函數中傳遞多個參數

func_get_args();//接收一個參數,包含數組中的所有參數
func_num_args;取得共有幾個參數
func_get_arg(整數);//獲得第幾個

參數,序號是從0開始

function stu_name(){
   $arr=func_get_args();
   //便利
    foreach($arr as $key=>$value){
        echo '學生{$key}的名字是:'$value.'<br>';
        echo '一共有'.func_num_args().'名學生';
        echo '第三個學生是'.func_get_arg(2); 
     }
}
stu_name('張三','李四','王五','趙六','周期','楊八','李九');

五、遞歸調用

遞歸:在函數體內調用自己,遞歸調用應該加上一個停止調用的函數,否則會陷入死循環
求階乘:
function jc($i){
   if($i>1){
     $s=$j*jc($i-1);
   }else{
     $s=1
   }
return $s;
}
echo jc(3);
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Lua 5.1 參考手冊 by Roberto Ierusalimschy, Luiz Henrique de F...
    蘇黎九歌閱讀 13,878評論 0 38
  • 1. 定義 函數是一個被命名的,獨立的代碼段,它執行特定的任務,并可能給調用它的程序一份返回值。 PHP的模塊化程...
    楠哥哥_0b86閱讀 635評論 1 2
  • 今天的我不愿辜負這美好天氣,準備出門—逛公園! 天氣暖和了,公園里人頭攢動。都在為美景駐足拍照! ...
    魚兒不會游Y閱讀 249評論 3 1
  • 放棄,只在一念間。那么多的辛苦和哀傷還有一廂情愿都一起放下,竟是有說不出的輕松暢快。那一刻,面如桃花,眼若星辰,身...
    銘玥詠全閱讀 287評論 0 1
  • 1不輕易扯上私交,幾分真情幾分利益難以看清,有無傷害更難斷定。 2不說自己是非和不聽別人是非,強大的人能承受痛苦創...
    獅女柔心_Nicole陶閱讀 348評論 0 3