PHP自定義函式及內部函式考察點

2022-08-31 06:54:10 字數 4880 閱讀 3208

變數的作用域也稱變數的範圍,變數的範圍即它定義的上下文背景(也是它的生效範圍)。大部分的php變數只有乙個單獨的範圍。這個單獨的範圍跨度同樣包含了include和require引入的檔案。

<?php

$outer = 'str';//全域性變數

function myfunc()

//全域性變數預設不能直接拿到函式內部使用,如果要使用,需要用到global關鍵字

function myfunc2()

靜態變數僅在區域性函式域中存在,但當程式執行離開次作用域時,其值並不會消失。

static關鍵字

僅初始化一次

初始化時需要賦值

每次執行函式該值會保留

static修飾的變數是區域性的,僅在函式內部有效

可以記錄函式的呼叫次數,從而可以在某些條件下終止遞迴

<?php

function myfunc()

myfunc();//1

myfunc();//2

<?php

$count = 5;

function get_count()

echo $count;// echo 5

++$count;// $count = 6

echo get_count();//進入函式內部,static $count 並沒有對$count 進行賦值,因此$count=null,return $count++,返回$count 的值,並對$count自增,因此此時echo的是null 也就是沒有輸出

echo get_count();//return $count++ ,返回$count,$count在上次自增後結果為1(null++ 是1),因此echo 1

預設情況下,函式的引數傳遞是值傳遞,要想在函式內部改變引數的值,需要使用引用傳遞。引用傳遞使用&

引用傳遞只能傳遞變數,不允許傳遞值。

<?php

function &myfunc()

$a = myfunc();//10

$a = &myfunc();//$a 指向了 $b

$a = 100;//$b 也變成了 100

echo myfunc();//100

include/require語句包含並執行指定檔案

如果給出路徑名則按照路徑來找,

否則從include_path中查詢,如果include_path中也沒有,則從呼叫指令碼檔案所在的目錄和當前工作目錄下尋找

當乙個檔案被包含時,其中所包含的**繼承了include所在行的變數範圍。

載入過程中未找到檔案則include 結構會發出一條警告(e_warning);這一點和require不同,require會發出乙個致命錯誤(e_compile_error)

date()函式
date() 函式把時間戳格式化為更易讀的日期和時間。

語法:date(format,timestamp)

引數

描述format

必需。規定時間戳的格式。

timestamp

可選。規定時間戳。預設是當前時間和日期。

常用於日期的格式字元:

<?php

echo "今天是 " . date("y/m/d") . "

";echo "今天是 " . date("y.m.d") . "

";echo "今天是 " . date("y-m-d") . "

";echo "今天是 " . date("l");//週幾(friday)

?>

常用於時間的格式字元:

strtotime()函式

strtotime() 函式將任何英文文字的日期或時間描述解析為 unix 時間戳(自 january 1 1970 00:00:00 gmt 起的秒數)。

注意:如果年份表示使用兩位數格式,則值 0-69 會對映為 2000-2069,值 70-100 會對映為 1970-2000。

注意:請注意 m/d/y 或 d-m-y 格式的日期,如果分隔符是斜線(/),則使用美洲的 m/d/y 格式。如果分隔符是橫槓(-)或者點(.),則使用歐洲的 d-m-y 格式。為了避免潛在的錯誤,您應該盡可能使用 yyyy-mm-dd 格式或者使用 date_create_from_format() 函式。

mktime()函式
mktime(hour,minute,second,month,day,year,is_dst);

引數

描述hour

可選。規定小時。

minute

可選。規定分。

second

可選。規定秒。

month

可選。規定月。

day可選。規定天。

year

可選。規定年。

is_dst

可選。如果時間在夏令時 (dst) 期間,則設定為 1,否則設定為 0,若未知則設定為 -1(預設)。

time()函式

返回自 unix 紀元(january 1 1970 00:00:00 gmt)起的當前時間的秒數。(unix時間戳)

microtime()函式
返回當前 unix 時間戳的微秒數。

microtime(get_as_float);

引數

描述get_as_float

可選。當設定為 true 時,規定函式應該返回浮點數,否則返回字串。預設為 false。

date_default_timezone_set()函式

設定預設時區

<?php

date_default_timezone_set("asia/shanghai");

echo date_default_timezone_get();

?>

ip2long()函式
函式 ip2long() 返回 ipv4 網路位址的長整型格式,從標準網路位址格式(點字串)轉化得到。

long2ip()函式

print()函式

語言結構,只能列印乙個變數

printf()
根據格式輸出

print_r()
會將陣列、物件格式化好之後輸出

echo()
語言結構,可以列印多個變數,用逗號隔開

sprintf()
根據格式返回,不輸出

var_dump()
會將陣列、物件格式化好之後輸出,並顯示資料型別

var_export()
將陣列格式化後輸出,可返回合法的php**

serialize()函式

unserialize()函式implode()函式

將乙個一維陣列的值轉化為字串

explode()函式

使用乙個字串分割另乙個字串

join()函式

implode()函式的別名

str_replace()函式

mixed str_replace ( mixed $search , mixed $replace , mixed $subject [, int &$count ] )

該函式返回乙個字串或者陣列。該字串或陣列是將 subject 中全部的 search 都被 replace 替換之後的結果。

如果沒有一些特殊的替換需求(比如正規表示式),你應該使用該函式替換 ereg_replace() 和 preg_replace()。

array_keys()

返回陣列中部分的或所有的鍵名

array_values()

返回陣列中所有的值

array_diff()

計算陣列的差集

array_intersect()

計算陣列的交集

array_merge()

合併陣列

array_shift()

將陣列開頭的單元移出陣列

array_unshift()

在陣列開頭插入乙個或多個單元

array_pop()

彈出陣列最後乙個單元(出棧)

array_push()

將乙個或多個單元壓入陣列的末尾(入棧)

PHP自定義函式

使用者自定義函式也稱自定義函式,它們不是php提供的,是由程式設計師建立的.由於自己建立了這樣的函式,所以就可以完全控制這些函式.因此可以讓乙個函式完全按照自己希望的方式執行.1,申明函式 在php中,定義函式的方法同其他程式語言幾乎一樣.下面是php申明函式的語法結構 function funct...

自定義函式及函式呼叫

在論壇中,發現有的道友對自定義函式的呼叫存在這以下問題 1 自定義函式宣告 函式呼叫 函式實現概念混淆 2 形參和實參混淆 3 自定義函式引數的傳值方式混淆 傳來傳去都不知道傳的到底是什麼?接下來,我就重點圍繞道友們常見的問題,說一說 1 自定義函式宣告 函式呼叫 函式實現 比如 交換兩個數的值的自...

php自定義常用函式

遞迴建立目錄 function mk dir dir 常用列印方法 function p error,stop true 去除html所有標籤 空格以及空白,並擷取字串 包括中文 param string string 字串 param number sublength 字串長度 param str...