[PHP從小白到大牛]-014 PHP自定義函數

自定義函數

  • 什麼是自定義函數
  • 不是系統預約義的, 是程序員根據自身業務需求本身定義的函數
  • 自定義函數的優勢是一次定義,屢次使用;

聲明自定義函數

function functionName ( [$arg[=value][,…]] ) {
…
…
}
複製代碼
  • 函數名稱和 PHP 中的其它標識符命名規則相同;
  • 函數名稱建議遵照「駝峯標記法」;
  • PHP 中的全部函數和類都具備全局做用域;
  • PHP 不支持函數重載,也不可能取消定義或者重定義已聲明的函數;
<?php


function add($a,$b){
	return $a+$b;
}


function add($a,$b,$c){
	return $a+$b+$c;
}

echo add(1,1,1); // 會報錯
複製代碼

調用自定義函數

[$變量名稱 = ] functionName ( [value,…] )
複製代碼
  • $a = demo(); ==> 調用函數, 並使用變量$a, 接收返回值
  • demo(); ==> 只是調用函數

單選題php

下列選項中不符合PHP自定義函數標準的是?()(選擇一項)程序員

多選題數組

如下函數會輸出‘apple’的是()(選擇兩項)bash

變量做用域

局部變量

  • 局部變量是在函數內部中定義的變量;
  • 它的做用域爲函數定義範圍內;

全局變量

  • 全局變量是在函數外部定義的變量;
  • 全局變量的做用域從定義處一直到文件結尾;
  • PHP 中全局變量在函數中使用時必須聲明爲 global;
  • 使用 $GLOBALS 替代 global
<?php

$a = "apple"; // 全局的


function demo(){
	global $a;
	echo $a;
}

demo();
複製代碼

超全局變量

  • $GLOBALS
  • $_SERVER
  • $_GET
  • $_POST
  • $_FILES
  • $_COOKIE
  • $_SESSION
  • $_REQUEST
  • $_ENV

多選題app

下圖代碼輸出的內容選項中描述正確的是()(選擇兩項)函數

單選題spa

如下全局變量使用正確的是?()(選擇一項)3d

參數

  • 經過參數能夠傳遞信息到函數內部;code

  • 一個函數能夠有零個或多個參數;多個參數之間以逗號做爲分隔符;cdn

  • 參數的數據類型能夠爲任意數據類型(資源除外);

  • 有默認值的參數稱爲可選參數,不然稱爲必選參數;

  • 默認參數必須放在任何須選參數的右側;

單選題

選項中結果正確的是()(選擇一項)

單選題

如下代碼輸出結果正確的是?()(選擇一項)

單選題

如下代碼輸出的結果正確的是?()(選擇一項)

形參和實參

  • 形參是指函數定義時參數;
  • 實參是指函數調用時的參數;
  • 實參和形參在數量上,順序上應嚴格一致;

單選題

下列代碼的結果正確的是()(選擇一項)

單選題

下列代碼的結果正確的是()(選擇一項)

按值傳遞

  • 按值傳遞參數是指直接傳遞參數值,也能夠是變量;

  • 按值傳遞會在函數內部改變參數的值,但它並不會改變函數外部的值;

單選題

下列代碼輸出的結果是()(選擇一項)

單選題

下列代碼輸出的結果是()(選擇一項)

按引用傳遞

  • 引用傳值必須在參數的前面加上 & 符號;
  • 引用傳值的參數值只能是變量;
  • 引用傳值會改變函數外部的值;
  • 引用指向原始變量;

單選題

如下代碼輸出結果正確的是?()(選擇一項)

單選題

如下代碼輸出結果正確的是?()(選擇一項)

可變數量的參數

  • PHP 的自定義函數中支持可變數量的參數;
  • 在 PHP 5.5 及更早版本中,使用函數 func_num_args(),和 func_get_args() 實現;
  • 在 PHP 5.6 及以上的版本中,由 ... 語法實現;

單選題

func_num_args的做用是?()(選擇一項)

單選題

如下代碼輸出結果正確的是?()(選擇一項)

返回值

  • return 語句將當即停止函數的運行,而且將控制權交回調用該函數的代碼行;

  • 若是省略 return語句,則返回值爲 NULL;

  • 返回值能夠是包括數組和對象的任意類型(資源除外);

  • 函數只能有一個返回值;

  • 若是須要返回多個值怎麼辦?

多選題

下列選項中輸出內容爲8的是()(選擇兩項)

單選題

下列選項中輸出結果正確的是()(選擇一項)

小做業

定義一個函數, 接收兩個參數, 返回第一個參數到最後一個參數的累加

sequence_summation(1,100)返回5050

<?php

function sequence_summation($a,$b){
	$sum = 0;
	for ($i=$a; $i <= $b; $i++) { 
		$sum+=$i;
	}
	return $sum;
}

echo sequence_summation(1,100);
複製代碼

匿名函數

  • 沒有名稱的函數
  • 通常用於回調函數, 回調函數, 都是匿名的
  • 一個函數做爲另外一個函數的參數就是回調函數
  • call_user_func(), 第一個參數是一個函數, 剩下的都是該函數的參數

多選題

下列選項輸出內容是‘imooc’的是()(選擇兩項)

內部函數

  • 在函數中聲明函數
  • 只有外部函數調用了, 內部函數才能使用

單選題

如下代碼輸出結果正確的是()(選擇一項)

多選題

如下選項會報錯的是()(選擇兩項)

遞歸函數

  • 本身調用本身

  • 必須設置一個終止條件, 不然無限遞歸, 至關於死循環
  • 猜想一下代碼的執行過程...

  • 使用遞歸, 實現愛你100次
<?php


function say($str,$num){
	if($num < 10){
		echo say($str,$num+1);
	}
	return $str.(11-$num)."次!<br/>";

}

echo say("愛你",1);
複製代碼
  • 遞歸通常會用於目錄的遍歷

小做業: 使用遞歸, 改寫以前的累加函數...

<?php

function sequence_summation($a,$b){
	if ($b == $a) {
		return $a;
	}else{
		return $a+sequence_summation($tmp = $a+1,$b);
	}
}

echo sequence_summation(1,100);
複製代碼

單選題

下列代碼輸出的是()(選擇一項)

單選題

如下代碼輸出的結果正確的是?()(選擇一項)

可變函數/變量函數

  • 變量名後加()
function hello(){
	echo "hello world";
}

$a = "hello";


$a();
複製代碼

單選題

下列代碼輸出的結果正確的是()(選擇一項)

預習 字符串函數, 日期函數, 數學函數

參見:

字符串函數: www.w3school.com.cn/php/php_ref…

數學函數: www.w3school.com.cn/php/php_ref…

日期函數: www.w3school.com.cn/php/php_ref…

相關文章
相關標籤/搜索