入門學習第四彈
前言
上次對運算符以及循環語句進行了學習方面的總結,這次就進入函數和數組的學習了。
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手冊。