PHP入門學習第四彈

前言

上次對運算符以及循環語句進行了學習方面的總結,這次就進入函數和數組的學習了。

switch語句、if else語句

個人感覺沒啥好總結的,和其他語言上的用法差不多。

switch

<?php
$a=1;
switch($a)
{
   case 1:
      echo "您給變量a賦值1!"break;
   case 2:
      echo "您給變量a賦值2!";
      break;
   default :
      echo "未檢測到您賦值操作!!";
}
?>

if else

<?php
$a=1;
if($a>0){
  echo "變量a的值大於0!";
}elseif($a=0){
  echo "變量a的值等於0!";
}else{
echo "變量a的值小於0!";
}
?>

函數

自定義函數

在PHP中,函數是用function來定義的。

<?php
function add($a,$b){
   echo $a+$b;
   //return ...
}
add(1,2);
?>

上面的return可以不寫,也可以寫。return是一個返回值,如果把函數中的echo改成return就無法輸出,因爲函數只是返回了這個值而不進行輸出。

變量範圍

變量範圍即它定義的上下文背景(也就是它的生效範圍)。

PHP的變量範圍有局部變量、全局變量以及靜態變量

局部變量

局部變量就是在函數中定義的變量,在函數的外部無法使用。

<?php
function a(){
	$a=1;
}
echo $a;
?>

輸出的結果會提示錯誤。
執行完畢後函數內部的動態變量都將被釋放。
也就是說在執行過後函數外部也可以定義一個同樣名字的變量。

<?php
function a(){
	$a=1;
	echo $a;
}
$a=2;
echo $a;
?>

這個就不會報錯。

全局變量

全局變量就是在函數外定義的變量稱爲全局變量,作用域範圍在定義變量開始到本程序文件的末尾。

<?php
$a=1;
function a(){
	
	$b=1;
	echo $a+$b;
}
a();
?>

不過這樣直接在函數中引用全局變量會報錯,需要用global關鍵字聲明一下。

<?php
$a=1;
function a(){
	global $a;
	$b=1;
	echo $a+$b;
}
a();
?>

在常量方面可以直接使用而不用像變量一樣需要聲明。

靜態變量

靜態變量僅在局部函數域中存在,但當程序執行離開此作用域時,其值並不丟失。
在我理解就是,靜態變量就是可以時刻刷新的變量。

<?php
function a(){
	$a=1;
	echo ++$a;
}
a();
a();
?>

在這個代碼中,會輸出兩次1。

<?php
function a(){
	static $a=1;
	echo ++$a;
}
a();
echo '<br />';
a();
?>

這次用static關鍵字聲明之後,輸出的結果就會變爲2 3

參數傳遞、可變函數

參數傳遞

1、按值傳參
2、引用傳參
3、可變長度參數
4、函數的默認值

按值傳參

在PHP語言中,若不聲明傳參方式,默認使用的就是這個方式。

<?php
  function test($a){
     $a="這個是".$a;
     echo $a;
}
$i="按值傳參";
test($i);
echo '</ br>';
echo $i;
?>

在這裏插入圖片描述
這樣子做,不會影響變量i的值

按引用傳參

總結就是按引用傳參會改變變量的值

<?php
function model(&$a){
  echo ++$a;
}
$i=1;
model($i);
echo '<br />'.$i;
?>

在這裏插入圖片描述

可變長度參數

是PHP提供給我們的可以直接使用的,主要有三個

func_get_args();
func_get_arg();
func_num_args();

func_get_args() 是獲取參數,個人理解是返回的是數組類型,
func_get_args() 可以理解爲獲取數組中的某一個數值,需要加一個數字,
func_num_args() 是返回的函數傳入的參數的個數
在函數中直接調用輸出的話目前學的是無法顯示出來,可以用前面說的var_dump來查看

<?php
function model(){
   var_dump(func_get_args());
   echo '<br />';
   var_dump(func_get_arg(1));
   echo '<br />';
   var_dump(func_num_args());
}
model(10,"可變長度參數",12,666);
?>

在這裏插入圖片描述

函數的默認值

函數默認值就是在創建函數時就給函數裏的變量賦予了一個值。

<?php
function model($a="函數的默認值"){
   echo $a.'<br />';
}
model();
model(20);
?>

在這裏插入圖片描述
在加默認值時,多個變量的話應該是從右往左加!!!

可變函數

可變函數不能用於例如echo、print、unset()、isset()、empty()、include、require以及類似的語言結構,需要使用自己的包裝函數來將這些結構用作可變函數。

<?php
function model(){
   echo "這是一個函數!!";
}
$i='model';
$i();
?>

在這裏插入圖片描述
可變函數使用,加上引號(單引號,雙引號都可以)。

遞歸函數

遞歸函數就是在函數裏面再調用一次自身函數,簡稱無形套娃。

<?php
function model($a){
   echo $a.'<br />';
   if($a>0){
      echo "這是遞歸函數".'<br />';
      model($a-1);
   }else{
      echo "函數結束".'<br />';
   }
   echo $a.'<br />';
}
model(5);
?>

在這裏插入圖片描述
使用遞歸函數需要有適當的循環結束條件,避免佔用內存過大。

內置函數

介紹

PHP 的真正威力源自於它的函數。 在 PHP 中,提供了超過 1000 個內建的函數

可以自己瞭解,比較多,慢慢在學習使用過程中會瞭解到。

boolval 獲取變量的布爾值
debug_zval_dump 查看一個變量在zend引擎中的引用計數、類型信息
doubleval floatval 的別名
empty 檢查一個變量是否爲空
floatval 獲取變量的浮點值
get_defined_vars 返回由所有已定義變量所組成的數組
get_resource_type 返回資源(resource)類型
gettype 獲取變量的類型
import_request_variables 將 GET/POST/Cookie 變量導入到全局作用域中
intval 獲取變量的整數值
is_array 檢測變量是否是數組
is_bool 檢測變量是否是布爾型
is_callable 檢測參數是否爲合法的可調用結構
is_double is_float 的別名
is_float 檢測變量是否是浮點型
is_int 檢測變量是否是整數
is_integer is_int 的別名
is_iterable 檢測變量的內容是否是一個可迭代的值
is_long is_int 的別名
is_null 檢測變量是否爲 NULL
is_numeric 檢測變量是否爲數字或數字字符串
is_object 檢測變量是否是一個對象
is_real is_float 的別名
is_resource 檢測變量是否爲資源類型
is_scalar 檢測變量是否是一個標量
is_string 檢測變量是否是字符串
isset 檢測變量是否已設置並且非 NULL
print_r 打印變量,輸出易於閱讀的信息。
serialize 序列化對象
settype 設置變量的類型
strval 獲取變量的字符串值
unserialize 從已存儲的表示中創建 PHP 的值
unset 釋放給定的變量
var_dump 打印變量的相關信息
var_export 輸出或返回一個變量,以字符串形式表示

簡單的羅列出了一點函數。
詳細的請看PHP手冊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章