一、<?php echo count(strlen(「http://php.net」)); ?>
的執行結果是?php
答案:1laravel
講解:count(var)是用來統計數組或對象的元素個數的。當var是null或者空數組時,結果爲0。若是var是普通變量,則返回1。正常狀況下返回var中的元素或屬性個數。web
二、使用list()函數須要注意什麼?正則表達式
答案:list()是一個語法結構。List($array)是用來快速把數組中的元素賦給一些變量。使用時要注意,$array必須爲一個索引數組,而且索引值從0開始。算法
三、請說明php.ini中的safe_mode開啓以後影響了哪些函數?sql
答案:Safe_mode是php的安全模式。開啓以後,主要會對系統操做、文件、權限設置等方法產生影響,主要用來應對webshell。如下是受到影響的一些函數:ckdir,move_uploaded_file,chgrp,parse_ini_file,shell
chown,rmdir,copy,rename,fopen,require,highlight_file,show_source,include,symlink,link,touch,mkdir,unlink,exec,數組
shell_exec,pasathru,system,popen安全
須要注意的是:在php5.3以上版本,safe_mode被棄用,在php5.4以上版本,則將此特性徹底去除了。服務器
四、請對POSIX風格和兼容Prel風格兩種正則表達式的主要函數進行類比說明。
答案:POSIX 風格 : 匹配正則表達式ereg 和替換 ereg_replace
Prel風格:匹配正則表達式 preg_match 和替換 preg_replace
Preg_match 比ereg的執行效率更快,preg_replace 比ereg_replace的執行效率更快。
五、如何在命令下運行php腳本(寫出兩種方式),如何向php腳本傳遞參數?
答案:第一種方式:先進入php安裝目錄,執行 php 路徑/文件名.php。
例:php my_script.php php -f "my_script.php"
第二種方式:php -r 「php腳本」;(不須要加php的開始符和結束符)。
例:php -r "print_r(get_defined_constants());"
向php腳本傳遞參數:
第一種方式:php -r "var_dump($argv);" -- -h (注意:若是要傳遞的參數開頭爲-,那麼得使用參數列表分隔符 -- 才能正確傳參。)
第二種方式:test.php文件代碼:#!/usr/bin/php
./test.php -h -- foo(在php文件開頭加入#!/usr/bin/php,便可直接傳遞以-爲開頭得參數)
六、php5中魔術方法有哪幾個?請舉例說明各自的用法。
答案:
一、__construct() :實例化對象時自動調用。
二、__destruct() :銷燬對象或腳本執行結束時自動調用。
三、__call() :調用對象不存在得方法時執行此函數。
四、__get() :獲取對象不存在的屬性時執行此函數。
五、__set() :設置對象不存在的屬性時執行此函數。
六、__isset() : 檢測對象的某個屬性是否存在時執行此函數。
七、__unset() :銷燬對象的某個屬性時執行此函數。
八、__toString() :將對象看成字符串輸出時執行此函數。
九、__clone() :克隆對象時執行此函數。
十、__autoload() :實例化對象時,當類不存在時,執行此函數自動加載類。
十一、__sleep() :serialize以前被調用,能夠指定要序列化的對象屬性。
十二、__wakeup :unserialize以前被調用,能夠執行對象的初始化工做。
1三、__set_state() :調用var_export時,被調用。用__set_state的返回值作爲var_export的返回值。
1四、__invoke() :將對象看成函數來使用時執行此方法,一般不推薦這樣作。
七、簡述php的垃圾收集機制。
答案:php中的變量存儲在變量容器zval中,zval中除了存儲變量類型和值外,還有is_ref和refcount字段。refcount表示指向變量的元素個數,is_ref表示變量是否有別名。若是refcount爲0時,就回收該變量容器。若是一個zval的refcount減1以後大於0,它就會進入垃圾緩衝區。當緩衝區達到最大值後,回收算法會循環遍歷zval,判斷其是否爲垃圾,並進行釋放處理。
八、用php實現一個雙向隊列。
隊列是一種線性表,按照先進先出的原則進行
單向隊列:只能從頭進,從尾出
雙向隊列:頭尾均可以進出
class DuiLie { private $array = array();//聲明空數組 public function setFirst($item){ return array_unshift($this->array,$item);//頭入列 } public function delFirst(){ return array_shift($this->array);//頭出列 } public function setLast($item){ return array_push($this->array,$item);//尾入列 } public function delLast(){ return array_pop($this->array,$item);//尾出列 } public function show(){ var_dump($this->array);//打印數組 } public function Del(){ unset($this->array);//清空數組 } }
好了各位,以上就是這篇文章的所有內容了,能看到這裏的人呀,都是人才。以前說過,PHP方面的技術點不少,也是由於太多了,實在是寫不過來,寫過來了你們也不會看的太多,因此我這裏把它整理成了PDF和文檔,若是有須要的能夠
更多學習內容能夠訪問【對標大廠】精品PHP架構師教程目錄大全,只要你能看完保證薪資上升一個臺階(持續更新)
以上內容但願幫助到你們,不少PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那裏入手去提高,對此我整理了一些資料,包括但不限於:分佈式架構、高可擴展、高性能、高併發、服務器性能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階乾貨須要的能夠免費分享給你們,須要的能夠加入個人 PHP技術交流羣