本文是根據慕課網Jason老師的課程進行的PHP面試知識點總結和升華,如有侵權請聯繫我進行刪除,email:[email protected] 在面試中,考官往往喜歡基礎扎實的面試者,而函數相關的考點,往往是大家容易忽視的一個點,今天冷月就來幫各位小伙伴們梳理一下,在面試中函數相關的註意點。 回顧真 ...
本文是根據慕課網Jason老師的課程進行的PHP面試知識點總結和升華,如有侵權請聯繫我進行刪除,email:[email protected]
在面試中,考官往往喜歡基礎扎實的面試者,而函數相關的考點,往往是大家容易忽視的一個點,今天冷月就來幫各位小伙伴們梳理一下,在面試中函數相關的註意點。
回顧真題
<?php
/**
* Created by 冷月小白.
* 微信公眾號: 學長冷月
*/
$count = 5;
function get_count()
{
static $count;
return $count++;
}
echo $count; //輸出5
++$count; // 6
echo "<br />";
echo get_count(); //什麼也不輸出,執行完後靜態$count的值為1
echo "<br />";
echo get_count(); //輸出1
解析:
在上面這段代碼中第一次執行get_count()時什麼也不輸出
因為$count++是先返回後++。而第二次執行get_count()時輸出1,理由同上
。不瞭解 $count++和++ $count的小伙伴們,可以學習一下冷月在另一篇博文中介紹的知識《php面試筆記(3)-php基礎知識-運算符》或者關註冷月的微信公眾號:學長冷月。回覆:php面試。冷月將整理好的資料發給您。
本題考查變數的作用域和靜態變數。靜態變數僅在函數作用域內有效,也就是說靜態變數只存活在棧中。但當程式執行離開此作用域時,其值並不會消失。也就是說下次再調用這個函數的時候,該變數的值會保留下來。
使用時只需要在變數前加上關鍵字static,該變數就成為靜態變數了。
考點分析
函數的參數及參數的引用傳遞
預設情況下,函數參數通過值來傳遞。如果希望允許函數修改它的值,必須通過引用來傳遞參數。關於引用參數傳遞,請學習冷月的另一篇博文《php面試筆記(1)-php基礎知識-變數和引用變數》。
函數的返回值
- 函數可以通過使用可選的返回語句(return)返回一個值;
- 可以返回包括數組和對象的任意類型;
- 返回語句會中止函數執行,將控制權交回函數調用處;
- 省略 return,返回值為 NULL,不可有多個返回值;【若想返回多個值,可以返回一個數組,把多個值放到一個數組中】
函數的引用返回
從函數返回一個引用,必須在函數聲明和指派返回值給一個變數時,都使用引用運算符 &。
<?php
/**
* Created by 冷月小白.
* 微信公眾號: 學長冷月
*/
function &myFunc()
{
static $b = 10;
return $b;
}
$a = myFunc(); // 10
$a = &myFunc(); // 將$a與$b互為引用(指向的是一個記憶體空間),此時將$b = 10,賦值給$a
$a = 100; // 修改 $a的值,函數中 $b的值也會發生改變
echo myFunc(); // 100
?>
外部文件的導入
- include
可以放在PHP腳本的任意位置,當PHP腳本執行到include指定引入的文件時,才將它包含並嘗試執行。當第二次遇到相同文件時,PHP還是會重新解釋一次,include相對於require的執行效率下降很多。 - require
require函數一般放在PHP腳本的最前面,當它在同一個網頁中解釋過一次後,第二次便不會解釋。 - include_once、 require_once
分別與require / include作用相同,不同的是他們在執行到時會先檢查目標內容是不是在之前已經導入過,如果導入過了,那麼便不會再次重覆引入其同樣的內容。
系統內置函數
1. 時間日期函數
date():對當前日期或時間進行格式化。
strtotime():把人類可讀的字元串轉換為 Unix 時間。
mktime():返回一個日期的 UNIX 時間戳。
time():返回當前時間戳(推薦)
microtime():返回當前 Unix 時間戳的微秒數
date_default_timezone_set():設置預設時區
2.IP處理函數
ip2long():IP網路址協議地址轉換成整數
long2ip():整數轉換成IP網路址協議地址
3. 序列化及反序列化函數
serialize():用於序列化對象或數組,並返回一個字元串。
unserialize():反序列化
** 4.字元串處理函數**
implode():把數組元素組合為一個字元串
explode():把字元串打散為數組
join():把數組元素組合為一個字元串
strrev():反轉字元串
trim():移除字元串兩側的空白字元或其他預定義字元。
ltrim():移除字元串左側的空白字元或其他預定義字元
rtrim():移除字元串右側的空白字元或其他預定義字元
strstr():搜索字元串在另一字元串中是否存在,如果是,返回該字元串及剩餘部分,否則返回 FALSE
number_format():通過千位分組來格式化數字
一網打盡
我們先來看一段代碼:
<?php
/**
* Created by 冷月小白.
* 微信公眾號: 學長冷月
*/
$var1 = 5;
$var2 = 10;
function foo(&$my_var)
{
global $var1; //使用全局變數 $var1 = 5
$var1 += 2; //7
$var2 = 4; //4 局部變數
$my_var += 3; //8
return $var2; //4
}
$my_var = 5;
echo foo($my_var); //4
echo $my_var; //8
echo $var1; //7
echo $var2; //10
$bar = 'foo'; //這裡使用可變函數foo
$my_var = 10;
echo $bar($my_var); //4
?>
答案:
本題考查了全局變數和局部變數的知識點,我們先不要看函數,等函數執行時再回過頭來看函數,這樣就可以較好的解決這類問題。
好了,今天和大家的分享就到這裡了,大家一定要勤加練習,早日收穫自己的offer!
歡迎關註我的公眾號:學長冷月,獲得獨家整理的學習資源和日常乾貨推送。
如果您對我的專題內容感興趣,也可以關註我的博客:guoyu7.com