php面试题之三——PHP语言基础(基础部分)
1. strlen( )與 mb_strlen( )的作用分別是什么(新浪網技術部)
strlen和mb_strlen都是用于獲取字符串長度。
strlen只針對單字節編碼字符,也就是說它計算的是字符串的總字節數。如果是多字節編碼,如 gbk 和 utf-8,使用 strlen 得到是該字符的總字節數;
可以使用mb_strlen獲取其字符個數,使用mb_strlen 要注意兩點,一是要開啟 mbstring 擴展,二是要指定字符集。
總結:
- strlen函數不管是字符串是單字節編碼還是多字節編碼,函數返回的結果都是字符串的總字節數。
- mb_strlen函數當字符串是單字節編碼時,函數返回的結果是字符串的總字節數。當字符串是多字節編碼時,函數返回的結果是字符串的個數。
mb_strlen函數在沒有指定字符編碼時,表示使用默認字符編碼,即單字節編碼,函數返回的是字符串的總字節數。 - PHP默認是單字節編碼(內部字符編碼),多字節編碼方式有gbk、utf-8等。
示例:
相關題目 1:實現中文字串截取無亂碼的方法。
方法一,使用 php 內置函數 mb_substr()
方法二,自定義函數,以 utf-8 為例,如下:
相關題目2:如何求解字符串“中國2北333京”的字符數(一個中文一個字符),并找到第四個字符“北”
方法一,使用php內置函數,確保配置中已打開mbstring擴展
方法二,自定義函數實現求其長度,截取使用上面定義的substr_utf8
2. 下列哪個函數是用正則表達式將字符串分割到數組中 ( )
A. split
B. implode
C. explode
D. join
答案:A
3. 寫出下列程序的輸出結果(新浪網技術部)
答案:1
4. 寫出下列幾個預定義全局變量的作用 (新浪網技術部)
$_SERVER['DOCUMENT_ROOT']//當前運行腳本所在的文檔根目錄 $_SERVER['HTTP_HOST ']//當前請求的 Host: 頭部的內容 $_SERVER['REMOTE_ADDR']//正在瀏覽當前頁面用戶的 IP 地址 $_SERVER['HTTP_REFERER']//鏈接到當前頁面的前一頁面的 URL 地址 $_SERVER['SERVER_NAME']//當前運行腳本所在服務器主機的名稱 $_FILES //包含有所有上傳的文件信息 S_FILES['userfile']['name']//客戶端機器文件的原名稱 $_FILES['userfile']['type']//文件 MIME 類型,如果瀏覽器提供此信息的話,如“image/gif”。 $_FILES['userfile']['size']//已上傳文件的大小,單位為字節 $_FILES['userfile']['tmp_name']//文件被上傳后在服務端儲存的臨時文件名 $_FILES['userfile']['error']//和該文件上傳相關的錯誤代碼5. include 和 require 都能把另外一個文件包含到當前文件中,他們有什么區別?Include 和include_once 又有什么區別?(新浪網技術部)
二者區別只有一個,那就是對包含文件的需求程度。include 就是包含,如果被包含的文件不存在的話,那么則會提示一個錯誤,但是程序會繼續執行下去。而 require 意思是需要,如果被包含文件不存在或者無法打開的時候,則會提示錯誤,并且會終止程序的執行。
這兩種結構除了在如何處理失敗之外完全一樣。
once 的意思是一次,那么 include_once 和 require_once 表示只包含一次,避免重復包含。
相關題目 1:What is the difference between include & include_once? include & require?(Yahoo)
相關題目 2:語句 include 和 require 都能把另外一個文件包含到當前文件中,它們的區
別是_;為了避免多次包含同一文件,可以用語句_來代替它們。
在如何處理失敗時,include()產生一個警告而require()則導致一個致命錯誤;require_once()/include_once()
相關題目 3:What functions can you use to add library code to the currently running script?(Yahoo)
include、require
6. 用最少的代碼寫一個求 3 值最大值的函數. (51.com 筆試題)
7. 簡述 POST 和 GET 傳輸的最大容量分別是多少? (51.com 筆試題)
POST 根據你 php.ini 文件配置(默認是 8M)
GET 的話大小限制在 2KB
相關題目:表單中 get 與 post 提交方法的區別?
get 是發送請求 HTTP 協議通過 url 參數傳遞進行接收,而 post 是實體數據,可以通過表單提交大量信息。
8. 有三個 php 文件位于同一目錄下,內容如下所示。使用瀏覽器訪問 c.php,請問是否存在問題。如果存在問題,請指出修正方法并寫出瀏覽器查看效果 ,如果不存在問題,請寫出瀏覽器查看效果(酷訊 PHP 工程師筆試題)
A.php:
B.php:
C.php:
答案:存在問題,a.php 被包含了兩次,導致 fa()函數重復定義,使用 include_once 避免重復包含。
9. echo(),print(),print_r()的區別?(新浪)
echo, print是PHP語句print_r是函數,語句沒有返回值,函數可以有返回值(即便沒有用)
print只能打印出簡單類型變量的值(如int,string)
print_r可以打印出復雜類型變量的值(如數組,對象)
echo -- 輸出一個或者多個字符串
print --輸出一個字符串
print_r -- 打印關于變量的易于理解的信息。
在實際使用中, print 和 echo 兩者的功能幾乎是完全一樣。
可以這么說,凡是有一個可以使用的地方,另一個也可以使用。但是,兩者之間也還是一個非常重要的區別:
在 echo 函數中,可以同時輸出多個字符串,而在 print 函數中則只可以同時輸出一個字符串。同時,echo函數并不需要圓括號,所以echo函數更像是語句而不像是函數。
echo 和 print 都不是函數,而是語言結構,所以圓括號都不是必需的。他們的區別在于:
(1) echo可以輸出多個字符串,像下面這樣:
echo 'a','b','c';
如果你非要加上圓括號,注意寫成echo ('a','b','c');是錯誤的,應該寫成:
echo ('a'),('b'),('c');
它沒有像函數的行為,所以不能用于函數的上下文
(2) print只能輸出一個字符串,它可以表現得像一個函數,比如你可以如下使用:
$ret = print 'Hello World';
(有返回值所以能夠用在更復雜的表達式中,可以判斷是否輸出成功等表達式)所以它能用在更復雜的表達式中。
另外,echo的效率相對比較快~
如下代碼:
說明:
總結:
echo命令和print命令相同,沒有區別
echo()和print()有區別:
echo()沒有返回值,與echo命令相同
print()有返回值,總是返回1
補充:
printf()和sprintf()類似,均為格式化輸出,不同的是前者輸出到標準輸出,后者輸出到變量
相關題目:What is the difference between "print()" and "echo( )"? (騰訊)
answer: print is a function,echo is a language construct
10. 用 PHP 打印出前一天的時間格式是 2006-5-10 22:21:21。
說明:
- 使用strtotime可以將任何字符串的時間表示(now,seconds,day,week等)轉換成時間戳,僅針對英文。
- 在實際開發的時候,strtotime非常有用,因為對于表單來說,提交的數據都是字符串。比如,“2013-4-27”需要將其轉換成時間戳然后存到數據庫中。
相關題目:求兩個日期的差數,例如 2009-3-1 ~ 2009-4-4 的日期差數
(strtotime("2009-4-4")-strtotime("2009-3-1"))/3600*24
11. 不使用第三個變量交換兩個變量的值
變量默認總是傳值賦值。
那也就是說,當將一個表達式的值賦予一個變量時,整個原始表達式的值被賦值到目標變量。這意味著,例如,當一個變量的值賦予另外一個變量時,改變其中一個變量的值,將不會影響到另外一個變量。
PHP 也提供了另外一種方式給變量賦值:引用賦值。
這意味著新的變量簡單的引用(換言之,“成為其別名” 或者 “指向”)了原始變量。改動新的變量將影響到原始變量,反之亦然。使用引用賦值,簡單地將一個&符號加到將要賦值的變量前(源變量)。
對象默認是傳引用。
對于較大的數據,傳引用比較好,這樣可以節省內存的開銷。
相關題目 1:What would the following code print to the browser? Why?
輸出 10
相關題目 2:What is the difference between a reference and a regular variable? How do you pass by reference & why would you want to?(Yahoo)
reference 傳送的是變量的地址而非它的值,所以在函數中改變一個變量的值時,整個應用都見到這個變量的新值。
一個 regular variable 傳送給函數的是它的值,當函數改變這個變量的值時,只有這個函數才見到新值,應用的其他部分仍然見到舊值。
13. 將 1234567890 轉換成 1,234,567,890 每 3 ���用逗號隔開的形式。(百度)
相關題目 1:如何實現字符串翻轉?
strrev(),不過這種方法都不能解決中文字符串翻轉的問題,會出錯的。
相關題目 2:假設現在有一個字符串 www.baidu.com 如何使用 PHP 對它進行操作使字符串以 moc.udiab.輸出? (億郵)
14. 用 PHP 寫出顯示客戶端 IP 與服務器 IP 的代碼。
客戶端 IP:$_SERVER["REMOTE_ADDR"]
服務器端 IP:$_SERVER["SERVER_ADDR"]
15. 簡述如何得到當前執行腳本路徑,包括所得到參數。
獲取當前執行腳本路徑使用$_SERVER["SCRIPT_FILENAME"]或__FILE__
獲取參數,使用$_SERVER["QUERY_STRING"]
16. What is the difference between foo() & @foo()?(Yahoo)
foo() 會執行這個函式,任何解譯錯誤、語法錯誤、執行錯誤都會在頁面上顯示出來。
@foo() 在執行這個函式時,會隱藏所有上述的錯誤訊息。
很多應用程序都使用 @mysql_connect() 和 @mysql_query 來隱藏 mysql 的錯誤信息,這是不對的,因為錯誤不該被隱藏,你必須妥善處理它們,可能的話解決它們。
17. 下面哪個選項沒有將 john 添加到 users 數組中? ( 百度 )
A.?users[]="john";B.arrayadd(users, "john");
C. array_push($users, "john");
D. $users ||= "john" ;
答案:BD
18. 檢測一個變量是否有設置的函數?是否為空的函數是?
isset 檢測一個變量是否設置
empty 檢測是否為空
注意二者的區別,如果 變量 是非空或非零的值,則 empty() 返回 FALSE。換句話說,""、0、"0"、NULL、FALSE、array() 以及沒有任何屬性的對象都將被認為是空的。
isset是檢測變量是否設置/定義,empty是檢測已定義的變量的值是否為空。
19. 在 PHP 中,當前腳本的名稱(不包括路徑和查詢字符串)記錄在預定義變量______中;而鏈接到當前頁面的的前一頁面 URL 記錄在預定義變量______中。
當前腳本名稱:$_SERVER["PHP_SELF"]或者?SERVER["SCRIPTNAME"];鏈接到當前頁面的前一頁面的URL地址:_SERVER["HTTP_REFERER"]。
20. sort()、assort()、和 ksort() 有什么分別?它們分別在什么情況下使用?
sort(),根據數組中元素的值,以英文字母順序排序,索引鍵會由 0 到 n-1 重新編號。主要是當數組索引鍵的值無關緊要時用來把數組排序。
assort(),PHP 沒有 assort() 函式,所以可能是 asort() 的筆誤。
asort(),對數組進行排序,數組的索引保持和單元的關聯。主要用于對那些單元順序很重要的結合數組進行排序。
ksort(),根據數組中索引鍵的值,以英文字母順序排序,特別適合用于希望把索引鍵排序的關聯數組。
21. 在 PHP 中 error_reporting 這個函數有什么作用?
打開或者關閉錯誤報告,如:
error_reporting(0);
error_reporting(E_ALL & ~ E_NOTICE);
error_reporting(E_ALL);
相關題目:error_reporting(2047) 什么作用?(新浪)
2047 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 + 1024
其中:
1 對應 E_ERROR,2 對應 E_WARNING,4 對應 E_PARSE,
8 對應 E_NOTICE,16 對應 E_CORE_ERROR,32 對應 E_CORE_WARNING
,64 對應 E_COMPILE_ERROR,128對應 E_COMPILE_WARNING,256 對應 E_USER_ERROR,
512 對應 E_USER_WARNING,1024 對應 E_USER_NOTICE。
error_reporting(2047)意味著上述錯誤都會顯示出來。
寫出以下程序的輸出結果 (CBSI)
<?php $str = 'cd'; $$str = 'hotdog';//$cd = 'hotdog'; $$str .= 'ok';//$cd .= 'ok'; echo $cd;hotdogok
相關題目:什么是可變變量?
獲取一個普通變量的值作為這個可變變量的變量名。
23. 常量如何定義? 如何檢測一個常量是否被定義?
定義常量:define()
檢測常量是否定義:defined()
如:
%為取模運算,輸出 0
$a % $b其結果的正負取決于 $a 的符號。
echo ((-8)%3)."<br />";//輸出 -2
echo (8%(-3))."<br />";//輸出 2
25. 數組函數 arsort 的作用是_;語句 error_reporting(2047)的作用是_。
arsort:對數組進行逆向排序并保持索引關系
error_reporting(2047)的作用 report All errors and warnings,見 21 題中相關題目。
26. 以 Apache 模塊的方式安裝 PHP,在文件 http.conf 中首先要用語句_動態裝載 PHP模塊,然后再用語句_使得 Apache 把所有擴展名為 php 的文件都作為 PHP 腳本處理。
LoadModule php5_module "c:/php/php5apache2.dll";
AddType application/x-httpd-php .php
27. 一個函數的參數不能是對變量的引用,除非在 php.ini 中把____設為 on.
allow_call_time_pass_reference :是否啟用在函數調用時強制參數被按照引用傳遞,默認關閉。
28. 在 PHP 中,heredoc 是一種特殊的字符串,它的結束標志必須____頂格寫,并且不能包含任何其它字符除";"
29.echo count("abc"); 輸出什么?(新浪?)
輸出 1
count :計算數組中的單元數目或對象中的屬性個數,通常是一個 array,任何其它類型都只有一個單元。
對于對象,如果安裝了 SPL,可以通過實現 Countable 接口來調用 count()。該接口只有一個方法 count(),此方法返回 count() 函數的返回值。
如果 var 不是數組類型或者實現了 Countable 接口的對象,將返回 1,有一個例外,如果 var 是 NULL 則結果是 0。
相關題目:What will be the output of the following PHP code:(騰訊)
answer: 1
30. 寫個函數用來對二維數組排序(新浪)
31. 寫 5 個不同的自己的函數,來獲取一個全路徑的文件的擴展名,允許封裝 php 庫中已有的函數。(新浪)
32. PHP 的意思,它能干些什么?
PHP( Hypertext Preprocessor,超文本預處理器的字母縮寫)是一種被廣泛應用的開放源代碼的多用途腳本語言,它可嵌入到 HTML 中,尤其適合 web 開發。
PHP 主要是用于服務端的腳本程序,因此可以用 PHP 來完成任何其它的 CGI 程序能夠完成的工作,例如收集表單數據,生成動態網頁,或者發送/接收Cookies。但 PHP 的功能遠不局限于此。
PHP 腳本主要用于以下三個領域:
- 服務端腳本。這是 PHP 最傳統,也是最主要的目標領域。
- 命令行腳本。可以編寫一段 PHP 腳本,并且不需要任何服務器或者瀏覽器來運行它。通過這種方式,僅僅只需要 PHP 解析器來執行。
- 編寫桌面應用程序。
33. Name a few ways to output (print) a block of HTML code in PHP?(Yahoo)
你可以使用 PHP 中任何一種輸出語句,包括 echo、print、printf,大部分人都使用如下例的 echo:
echo "My string $variable";
你也可以使用這種方法:
34. 寫出以下程序的輸出結果 (CBSI)
輸出結果為 4
打印第一個元素:echo $arr[0];
以’,’合并成字符串:echo implode(',',$arr);
36.?a=′abcdef′;請取出a 的值并打印出第一個字母
echo $a{0} 或 echo $a[0]
相關題目:string="abcdefg",那么string{4}的值是? (卓望)
值是 e
37. What does === do? What's an example of something that will give true for '==', but not'==='? (Yahoo)
=== 表示全等,是指的兩個變量的值和類型都相等。
如 if (strpos('abc','a') == false) 和 if (strpos('abc','a') === false)
38. Which of the following snippets prints a representation of 42 with two decimal places?(騰訊)
A. printf("%.2d\n", 42);
B. printf("%1.2f\n", 42);
C. printf("%1.2u\n", 42);
answer:B
39. Given?text=′Content?TypeType:text/xml′;Whichofthefollowingprints′text/xml′?(騰訊)A.printsubstr(text, strchr(text,′:′));B.printsubstr(text, strchr(text,′:′)+1);C.printsubstr(text, strpos(text,′:′)+1);D.printsubstr(text, strpos(text,′:′)+2);E.printsubstr(text, 0, strchr($text, ':'));
answer:C
分析:
40. What is the value of $a?
A. True
B. False
answer:A
41. What is the value of $result in the following PHP code? (騰訊)
answer: NULL
42. What is the best all-purpose way of comparing two strings? (騰訊)
A. Using the strpos function
B. Using the == operator
C. Using strcasecmp()
D. Using strcmp()
answer:C
43. 運行以下程序,$a 的值是多少?
answer:hello
44. 運行以下程序,$b 的值是多少?
answer:1
45. 運行以下程序,$x 的值是多少?
answer:ture
46. 將字符 09 轉換成十進制數字。(百度)
使用 intval 函數,echo intval("09"),或者使用 int 強制類型轉換。
47. 請 寫 一 個 函 數 , 實 現 以 下 功 能 : 字 符 串 "open_door" 轉 換 成 "OpenDoor" 、"make_by_id" 轉換成 "MakeById"。
48. 要求寫一段程序,實現以下數組arr1轉換成數組arr2:
49. 如何將一個數組元素的排列順序反轉過來(例如以下代碼反轉以后的順序是: array ('d','c', 'b', 'a'))? (選擇 2 個答案)
A. array_flip()
B. array_reverse()
C. sort()
D. rsort()
答案:BD
50.?val=max(′string′,array(2,5,7),42);val 值為
array(2,5,7)
max 用法示例如下:
51. 定義常量 MYPI=3.14_________________________;
define("MYPI",3.14);
52. 簡述單引號和雙引號的用法
雙引號串中的內容可以被解釋而且替換,而單引號串中的內容總被認為是普通字符。
53. Switch 完整語法和注意事項
使用 Switch 語句可以避免冗長的 if..elseif..else 代碼塊,case只能處理整數,或者能像整數一樣運算的類型,比如char,使用時case 后用'',注意 break不能少,default是為了處理一些之前沒有包含到的情況,這樣更為安全。
54. 用 PHP 編寫代碼在頁面輸出當前的北京時間,格式為 “2007-01-18 09:22:03”
date_default_timezone_set('PRC');
echo date("Y-m-d H:i:s",time());
55. 簡述 GBK、GB2312、BIG5 、GB18030
GB2312 支持的漢字較少,GBK 是相比 GB2312 漢字更為豐富,包括全部中日韓漢字,GB18030 相比 GBK 增加了一些少數名族漢字漢字庫更為多樣,但是常人很難用到,一般簡體中文使用 GBK 而繁體中文使用 BIG5。
56. 計算某段字符串中某個字符出現的次數(例如 : gdfgfdgd59gmkblg 中 g 的次數)
$text = 'gdfgfdgd59gmkblg'; echo substr_count ( $text,'g');57. 以下語句可能存在錯誤,如果存在錯誤請指出什么錯誤(每個語句單獨考慮)
print_r $val = 333;// error,print_r 是一個函數,需加上括號,如果是 print 則可以
print_r($val = 333);?// 正確
$a += ($b = 4) + 5;// notice,a未定義,但可以正確運行‘foo[bar] = 'enemy';// notice,最好 bar 加上引號function x($a = "1", $b){}`// 無,但給參數默認值應盡量從右向左
58. 寫出如下程序的輸出結果(小米)
59. 寫出如下程序的輸出結果
60. 寫出如下程序的輸出結果
aaaa
61. 寫出如下程序的輸出結果
501
分析:
在 PHP 中,作用域是不重疊的,函數之外的是全局變量,函數內部定義的則是局部變量,二者是兩個不同的變量,除非在函數內使用 global 顯式聲明使用全局變量或直接用$_GLOBALS 來引用。
62. 寫出如下程序的輸出結果
52
63. 寫出如下程序的輸出結果
12
64.?arr=array(′james′,′tom′,′symfony′);請將′jack′添加到arr 數組的開頭,并把 jack 打印出來。
array_unshift($arr,’jack’); echo $arr[0];65.?arr=array(′james′,′tom′,′symfony′);請將arr 數組的值用 ’,’分割并合并成字符串輸出?
echo implode(‘,’,$arr);
66.?str=‘jack,james,tom,symfony′;請將str 用’,’分割,并把分割后的值放到$arr 數組中?
$arr = explode(‘,’,$str);
67.?arr=array(3,7,2,1,′d′,′abc′);請將arr 按照從大到小的順序排序,并保持其鍵值不變?
arsort($arr); print_r($arr);68. $mail = “gaofei@163.com”; 請將此郵箱的域(163.com)取出來并打印,看最多能寫出幾種方法?
echo strstr($mail,'163'); echo substr($mail,7); echo substr($mail, strpos($mail, '@')+1); $arr = explode("@",$mail); echo $arr[1];69. PHP 中的注釋的寫法,要列出三種?
// 注釋內容?C 風格的單行注釋
# 注釋內容?unix 風格的單行注釋
/* 注釋內容 */?C 風格的多行注釋
70. 如何在一個 php 函數中使用具有全局屬性的變量,說出兩種方式?
global $a 或者 $GLOBALS['a']
71. 若$aa='aa';則 print('aa is \'aa\''."
")會輸出什么?
aa is 'aa'
72. 如何把$a = ‘123’轉化成 123,列出兩種方式?
相關題目:字符串怎么轉成整數,有幾種方法?怎么實現?
73. 說說 break 和 continue 可以用在哪些語句里,并且列出二者的區別?
break 和 continue 可以用在 switch 語句中,或是循環結構中
它們的區別主要是體現在循環語句中,break 表示 跳出整個循環,不再執行,循環將終止,而 continue 則表示跳出本次循環,繼續下一次的循環,不會終止循環。
74. 函數中的默認參數位置如何放置?
當使用默認參數時,任何默認參數必須放在任何非默認參數的右側;否則,函數將不會按照預期的情況工作。
75. 如何往一個數組后面添加一個值?列出兩種方式?
$arr[ ] = $value; array_push($arr, $value);[!!!]76. 說出數組涉及到的常用函數。
array --聲明一個數組
count -- 計算數組中的單元數目或對象中的屬性個數
foreach -- 遍歷數組
list -- 將數組中元素的值賦值給變量,批量聲明變量
explode -- 將字符串轉成數組
implode -- 將數組轉成一個新字符串
array_merge -- 合并一個或多個數組
is_array -- 檢查是否是數組
print_r -- 輸出數組
sort -- 數組排序
array_keys -- 返回數組中所有的鍵名
array_values -- 返回數組中所有的值
key -- 從關聯數組中取得鍵名
[!!!]77. 字符串的常用函數?
trim()-- 去除字符串首尾處的空白字符(或者其他字符)
strlen()-- 字符串長度
substr()-- 截取字符串
str_replace()-- 替換字符串函數
strstr()-- 查找字符串的首次出現位置,返回 第一次出現的位置開始到結尾的字符串
explode()-- 將字符串分割成數組
implode()-- 將數組分割成字符串
str_repeat() -- 重復一個字符串
addslashes() -- 轉義字符串
htmlspecialchars() -- HTML 實體轉義
78. 以下代碼的執行后是,$result 值為:(奇矩互動)
A. a
B. false
C. true
D. b
E. c
答案:B
mixed array_rand( array $input [, int $num_req ] )
從數組中隨機取出一個或多個單元,它接受 input 作為輸入數組和一個可選的參數num_req,指明了你想取出多少個單元 - 如果沒有指定,默認為 1。
如果你只取出一個,array_rand() 返回一個隨機單元的鍵名,否則就返回一個包含隨機鍵名的數組。
所以使用 array_rand 函數,返回結果要么是鍵名,要么是數組,在這個例子中,數組是索引數組,所以返回的是整型。
79. 以下代碼的執行后是,$result 值為: (奇矩互動)
A. 1
B. 2
C. 3
D. 4
E. 5
答案:B
80. php 函數名是否區分大小寫? (奇矩互動)
A. 不區分
B. 區分
答案:A
函數名是大小寫無關的,不過在調用函數的時候,通常使用其在定義時相同的形式。
81.以下代碼的執行后是,$result 值為:(奇矩互動)
A. null
B. true
C. false
D. 1
答案:C
is_null -- 檢測變量是否為 NULL,如果變量是 null 則返回 TRUE,否則返回 FALSE。
在下列情況下一個變量被認為是 NULL:
82. 翻轉字符串中的單詞,字符串僅包含大小寫字母和空格,單詞間使用空格分隔。如 :輸入"This is PHP",輸出"PHP is This"(非必要請不要使用 PHP 自帶函數) (小米)
83. 請列舉出你所知道的全局環境變量 (億郵)
$_ENV;
$_SERVER;
$_REQUEST;
$_FILES;
$_SESSION;
$_COOKIE;
$_GET;
$_POST;
$GLOBALS;
84. 設有這樣一個數組$a=array(array(id=>0),array(id=>1),array(id=>2)......)id=>0-10000,請問你如何使用 PHP 判斷 id=>500 是否在這個數組內? (億郵)
使用 in_array 函數,代碼如下:
85. 在 PHP 中兩個數組怎么連接合并在一起 (億郵)
使用 array_merge()函數
86. 運行以上代碼后$a $b $c 分別是? (卓望)
a為false,b = $c = 0
1. strlen( )與 mb_strlen( )的作用分別是什么(新浪網技術部)
strlen和mb_strlen都是用于獲取字符串長度。
strlen只針對單字節編碼字符,也就是說它計算的是字符串的總字節數。如果是多字節編碼,如 gbk 和 utf-8,使用 strlen 得到是該字符的總字節數;
可以使用mb_strlen獲取其字符個數,使用mb_strlen 要注意兩點,一是要開啟 mbstring 擴展,二是要指定字符集。
總結:
- strlen函數不管是字符串是單字節編碼還是多字節編碼,函數返回的結果都是字符串的總字節數。
- mb_strlen函數當字符串是單字節編碼時,函數返回的結果是字符串的總字節數。當字符串是多字節編碼時,函數返回的結果是字符串的個數。
mb_strlen函數在沒有指定字符編碼時,表示使用默認字符編碼,即單字節編碼,函數返回的是字符串的總字節數。 - PHP默認是單字節編碼(內部字符編碼),多字節編碼方式有gbk、utf-8等。
示例:
相關題目 1:實現中文字串截取無亂碼的方法。
方法一,使用 php 內置函數 mb_substr()
方法二,自定義函數,以 utf-8 為例,如下:
相關題目2:如何求解字符串“中國2北333京”的字符數(一個中文一個字符),并找到第四個字符“北”
方法一,使用php內置函數,確保配置中已打開mbstring擴展
方法二,自定義函數實現求其長度,截取使用上面定義的substr_utf8
2. 下列哪個函數是用正則表達式將字符串分割到數組中 ( )
A. split
B. implode
C. explode
D. join
答案:A
3. 寫出下列程序的輸出結果(新浪網技術部)
答案:1
4. 寫出下列幾個預定義全局變量的作用 (新浪網技術部)
$_SERVER['DOCUMENT_ROOT']//當前運行腳本所在的文檔根目錄 $_SERVER['HTTP_HOST ']//當前請求的 Host: 頭部的內容 $_SERVER['REMOTE_ADDR']//正在瀏覽當前頁面用戶的 IP 地址 $_SERVER['HTTP_REFERER']//鏈接到當前頁面的前一頁面的 URL 地址 $_SERVER['SERVER_NAME']//當前運行腳本所在服務器主機的名稱 $_FILES //包含有所有上傳的文件信息 S_FILES['userfile']['name']//客戶端機器文件的原名稱 $_FILES['userfile']['type']//文件 MIME 類型,如果瀏覽器提供此信息的話,如“image/gif”。 $_FILES['userfile']['size']//已上傳文件的大小,單位為字節 $_FILES['userfile']['tmp_name']//文件被上傳后在服務端儲存的臨時文件名 $_FILES['userfile']['error']//和該文件上傳相關的錯誤代碼5. include 和 require 都能把另外一個文件包含到當前文件中,他們有什么區別?Include 和include_once 又有什么區別?(新浪網技術部)
二者區別只有一個,那就是對包含文件的需求程度。include 就是包含,如果被包含的文件不存在的話,那么則會提示一個錯誤,但是程序會繼續執行下去。而 require 意思是需要,如果被包含文件不存在或者無法打開的時候,則會提示錯誤,并且會終止程序的執行。
這兩種結構除了在如何處理失敗之外完全一樣。
once 的意思是一次,那么 include_once 和 require_once 表示只包含一次,避免重復包含。
相關題目 1:What is the difference between include & include_once? include & require?(Yahoo)
相關題目 2:語句 include 和 require 都能把另外一個文件包含到當前文件中,它們的區
別是_;為了避免多次包含同一文件,可以用語句_來代替它們。
在如何處理失敗時,include()產生一個警告而require()則導致一個致命錯誤;require_once()/include_once()
相關題目 3:What functions can you use to add library code to the currently running script?(Yahoo)
include、require
6. 用最少的代碼寫一個求 3 值最大值的函數. (51.com 筆試題)
7. 簡述 POST 和 GET 傳輸的最大容量分別是多少? (51.com 筆試題)
POST 根據你 php.ini 文件配置(默認是 8M)
GET 的話大小限制在 2KB
相關題目:表單中 get 與 post 提交方法的區別?
get 是發送請求 HTTP 協議通過 url 參數傳遞進行接收,而 post 是實體數據,可以通過表單提交大量信息。
8. 有三個 php 文件位于同一目錄下,內容如下所示。使用瀏覽器訪問 c.php,請問是否存在問題。如果存在問題,請指出修正方法并寫出瀏覽器查看效果 ,如果不存在問題,請寫出瀏覽器查看效果(酷訊 PHP 工程師筆試題)
A.php:
B.php:
C.php:
答案:存在問題,a.php 被包含了兩次,導致 fa()函數重復定義,使用 include_once 避免重復包含。
9. echo(),print(),print_r()的區別?(新浪)
echo, print是PHP語句print_r是函數,語句沒有返回值,函數可以有返回值(即便沒有用)
print只能打印出簡單類型變量的值(如int,string)
print_r可以打印出復雜類型變量的值(如數組,對象)
echo -- 輸出一個或者多個字符串
print --輸出一個字符串
print_r -- 打印關于變量的易于理解的信息。
在實際使用中, print 和 echo 兩者的功能幾乎是完全一樣。
可以這么說,凡是有一個可以使用的地方,另一個也可以使用。但是,兩者之間也還是一個非常重要的區別:
在 echo 函數中,可以同時輸出多個字符串,而在 print 函數中則只可以同時輸出一個字符串。同時,echo函數并不需要圓括號,所以echo函數更像是語句而不像是函數。
echo 和 print 都不是函數,而是語言結構,所以圓括號都不是必需的。他們的區別在于:
(1) echo可以輸出多個字符串,像下面這樣:
echo 'a','b','c';
如果你非要加上圓括號,注意寫成echo ('a','b','c');是錯誤的,應該寫成:
echo ('a'),('b'),('c');
它沒有像函數的行為,所以不能用于函數的上下文
(2) print只能輸出一個字符串,它可以表現得像一個函數,比如你可以如下使用:
$ret = print 'Hello World';
(有返回值所以能夠用在更復雜的表達式中,可以判斷是否輸出成功等表達式)所以它能用在更復雜的表達式中。
另外,echo的效率相對比較快~
如下代碼:
說明:
總結:
echo命令和print命令相同,沒有區別
echo()和print()有區別:
echo()沒有返回值,與echo命令相同
print()有返回值,總是返回1
補充:
printf()和sprintf()類似,均為格式化輸出,不同的是前者輸出到標準輸出,后者輸出到變量
相關題目:What is the difference between "print()" and "echo( )"? (騰訊)
answer: print is a function,echo is a language construct
10. 用 PHP 打印出前一天的時間格式是 2006-5-10 22:21:21。
說明:
- 使用strtotime可以將任何字符串的時間表示(now,seconds,day,week等)轉換成時間戳,僅針對英文。
- 在實際開發的時候,strtotime非常有用,因為對于表單來說,提交的數據都是字符串。比如,“2013-4-27”需要將其轉換成時間戳然后存到數據庫中。
相關題目:求兩個日期的差數,例如 2009-3-1 ~ 2009-4-4 的日期差數
(strtotime("2009-4-4")-strtotime("2009-3-1"))/3600*24
11. 不使用第三個變量交換兩個變量的值
變量默認總是傳值賦值。
那也就是說,當將一個表達式的值賦予一個變量時,整個原始表達式的值被賦值到目標變量。這意味著,例如,當一個變量的值賦予另外一個變量時,改變其中一個變量的值,將不會影響到另外一個變量。
PHP 也提供了另外一種方式給變量賦值:引用賦值。
這意味著新的變量簡單的引用(換言之,“成為其別名” 或者 “指向”)了原始變量。改動新的變量將影響到原始變量,反之亦然。使用引用賦值,簡單地將一個&符號加到將要賦值的變量前(源變量)。
對象默認是傳引用。
對于較大的數據,傳引用比較好,這樣可以節省內存的開銷。
相關題目 1:What would the following code print to the browser? Why?
輸出 10
相關題目 2:What is the difference between a reference and a regular variable? How do you pass by reference & why would you want to?(Yahoo)
reference 傳送的是變量的地址而非它的值,所以在函數中改變一個變量的值時,整個應用都見到這個變量的新值。
一個 regular variable 傳送給函數的是它的值,當函數改變這個變量的值時,只有這個函數才見到新值,應用的其他部分仍然見到舊值。
13. 將 1234567890 轉換成 1,234,567,890 每 3 ���用逗號隔開的形式。(百度)
相關題目 1:如何實現字符串翻轉?
strrev(),不過這種方法都不能解決中文字符串翻轉的問題,會出錯的。
相關題目 2:假設現在有一個字符串 www.baidu.com 如何使用 PHP 對它進行操作使字符串以 moc.udiab.輸出? (億郵)
14. 用 PHP 寫出顯示客戶端 IP 與服務器 IP 的代碼。
客戶端 IP:$_SERVER["REMOTE_ADDR"]
服務器端 IP:$_SERVER["SERVER_ADDR"]
15. 簡述如何得到當前執行腳本路徑,包括所得到參數。
獲取當前執行腳本路徑使用$_SERVER["SCRIPT_FILENAME"]或__FILE__
獲取參數,使用$_SERVER["QUERY_STRING"]
16. What is the difference between foo() & @foo()?(Yahoo)
foo() 會執行這個函式,任何解譯錯誤、語法錯誤、執行錯誤都會在頁面上顯示出來。
@foo() 在執行這個函式時,會隱藏所有上述的錯誤訊息。
很多應用程序都使用 @mysql_connect() 和 @mysql_query 來隱藏 mysql 的錯誤信息,這是不對的,因為錯誤不該被隱藏,你必須妥善處理它們,可能的話解決它們。
17. 下面哪個選項沒有將 john 添加到 users 數組中? ( 百度 )
A.?users[]="john";B.arrayadd(users, "john");
C. array_push($users, "john");
D. $users ||= "john" ;
答案:BD
18. 檢測一個變量是否有設置的函數?是否為空的函數是?
isset 檢測一個變量是否設置
empty 檢測是否為空
注意二者的區別,如果 變量 是非空或非零的值,則 empty() 返回 FALSE。換句話說,""、0、"0"、NULL、FALSE、array() 以及沒有任何屬性的對象都將被認為是空的。
isset是檢測變量是否設置/定義,empty是檢測已定義的變量的值是否為空。
19. 在 PHP 中,當前腳本的名稱(不包括路徑和查詢字符串)記錄在預定義變量______中;而鏈接到當前頁面的的前一頁面 URL 記錄在預定義變量______中。
當前腳本名稱:$_SERVER["PHP_SELF"]或者?SERVER["SCRIPTNAME"];鏈接到當前頁面的前一頁面的URL地址:_SERVER["HTTP_REFERER"]。
20. sort()、assort()、和 ksort() 有什么分別?它們分別在什么情況下使用?
sort(),根據數組中元素的值,以英文字母順序排序,索引鍵會由 0 到 n-1 重新編號。主要是當數組索引鍵的值無關緊要時用來把數組排序。
assort(),PHP 沒有 assort() 函式,所以可能是 asort() 的筆誤。
asort(),對數組進行排序,數組的索引保持和單元的關聯。主要用于對那些單元順序很重要的結合數組進行排序。
ksort(),根據數組中索引鍵的值,以英文字母順序排序,特別適合用于希望把索引鍵排序的關聯數組。
21. 在 PHP 中 error_reporting 這個函數有什么作用?
打開或者關閉錯誤報告,如:
error_reporting(0);
error_reporting(E_ALL & ~ E_NOTICE);
error_reporting(E_ALL);
相關題目:error_reporting(2047) 什么作用?(新浪)
2047 = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 + 1024
其中:
1 對應 E_ERROR,2 對應 E_WARNING,4 對應 E_PARSE,
8 對應 E_NOTICE,16 對應 E_CORE_ERROR,32 對應 E_CORE_WARNING
,64 對應 E_COMPILE_ERROR,128對應 E_COMPILE_WARNING,256 對應 E_USER_ERROR,
512 對應 E_USER_WARNING,1024 對應 E_USER_NOTICE。
error_reporting(2047)意味著上述錯誤都會顯示出來。
寫出以下程序的輸出結果 (CBSI)
<?php $str = 'cd'; $$str = 'hotdog';//$cd = 'hotdog'; $$str .= 'ok';//$cd .= 'ok'; echo $cd;hotdogok
相關題目:什么是可變變量?
獲取一個普通變量的值作為這個可變變量的變量名。
23. 常量如何定義? 如何檢測一個常量是否被定義?
定義常量:define()
檢測常量是否定義:defined()
如:
%為取模運算,輸出 0
$a % $b其結果的正負取決于 $a 的符號。
echo ((-8)%3)."<br />";//輸出 -2
echo (8%(-3))."<br />";//輸出 2
25. 數組函數 arsort 的作用是_;語句 error_reporting(2047)的作用是_。
arsort:對數組進行逆向排序并保持索引關系
error_reporting(2047)的作用 report All errors and warnings,見 21 題中相關題目。
26. 以 Apache 模塊的方式安裝 PHP,在文件 http.conf 中首先要用語句_動態裝載 PHP模塊,然后再用語句_使得 Apache 把所有擴展名為 php 的文件都作為 PHP 腳本處理。
LoadModule php5_module "c:/php/php5apache2.dll";
AddType application/x-httpd-php .php
27. 一個函數的參數不能是對變量的引用,除非在 php.ini 中把____設為 on.
allow_call_time_pass_reference :是否啟用在函數調用時強制參數被按照引用傳遞,默認關閉。
28. 在 PHP 中,heredoc 是一種特殊的字符串,它的結束標志必須____頂格寫,并且不能包含任何其它字符除";"
29.echo count("abc"); 輸出什么?(新浪?)
輸出 1
count :計算數組中的單元數目或對象中的屬性個數,通常是一個 array,任何其它類型都只有一個單元。
對于對象,如果安裝了 SPL,可以通過實現 Countable 接口來調用 count()。該接口只有一個方法 count(),此方法返回 count() 函數的返回值。
如果 var 不是數組類型或者實現了 Countable 接口的對象,將返回 1,有一個例外,如果 var 是 NULL 則結果是 0。
相關題目:What will be the output of the following PHP code:(騰訊)
answer: 1
30. 寫個函數用來對二維數組排序(新浪)
31. 寫 5 個不同的自己的函數,來獲取一個全路徑的文件的擴展名,允許封裝 php 庫中已有的函數。(新浪)
32. PHP 的意思,它能干些什么?
PHP( Hypertext Preprocessor,超文本預處理器的字母縮寫)是一種被廣泛應用的開放源代碼的多用途腳本語言,它可嵌入到 HTML 中,尤其適合 web 開發。
PHP 主要是用于服務端的腳本程序,因此可以用 PHP 來完成任何其它的 CGI 程序能夠完成的工作,例如收集表單數據,生成動態網頁,或者發送/接收Cookies。但 PHP 的功能遠不局限于此。
PHP 腳本主要用于以下三個領域:
- 服務端腳本。這是 PHP 最傳統,也是最主要的目標領域。
- 命令行腳本。可以編寫一段 PHP 腳本,并且不需要任何服務器或者瀏覽器來運行它。通過這種方式,僅僅只需要 PHP 解析器來執行。
- 編寫桌面應用程序。
33. Name a few ways to output (print) a block of HTML code in PHP?(Yahoo)
你可以使用 PHP 中任何一種輸出語句,包括 echo、print、printf,大部分人都使用如下例的 echo:
echo "My string $variable";
你也可以使用這種方法:
34. 寫出以下程序的輸出結果 (CBSI)
輸出結果為 4
打印第一個元素:echo $arr[0];
以’,’合并成字符串:echo implode(',',$arr);
36.?a=′abcdef′;請取出a 的值并打印出第一個字母
echo $a{0} 或 echo $a[0]
相關題目:string="abcdefg",那么string{4}的值是? (卓望)
值是 e
37. What does === do? What's an example of something that will give true for '==', but not'==='? (Yahoo)
=== 表示全等,是指的兩個變量的值和類型都相等。
如 if (strpos('abc','a') == false) 和 if (strpos('abc','a') === false)
38. Which of the following snippets prints a representation of 42 with two decimal places?(騰訊)
A. printf("%.2d\n", 42);
B. printf("%1.2f\n", 42);
C. printf("%1.2u\n", 42);
answer:B
39. Given?text=′Content?TypeType:text/xml′;Whichofthefollowingprints′text/xml′?(騰訊)A.printsubstr(text, strchr(text,′:′));B.printsubstr(text, strchr(text,′:′)+1);C.printsubstr(text, strpos(text,′:′)+1);D.printsubstr(text, strpos(text,′:′)+2);E.printsubstr(text, 0, strchr($text, ':'));
answer:C
分析:
40. What is the value of $a?
A. True
B. False
answer:A
41. What is the value of $result in the following PHP code? (騰訊)
answer: NULL
42. What is the best all-purpose way of comparing two strings? (騰訊)
A. Using the strpos function
B. Using the == operator
C. Using strcasecmp()
D. Using strcmp()
answer:C
43. 運行以下程序,$a 的值是多少?
answer:hello
44. 運行以下程序,$b 的值是多少?
answer:1
45. 運行以下程序,$x 的值是多少?
answer:ture
46. 將字符 09 轉換成十進制數字。(百度)
使用 intval 函數,echo intval("09"),或者使用 int 強制類型轉換。
47. 請 寫 一 個 函 數 , 實 現 以 下 功 能 : 字 符 串 "open_door" 轉 換 成 "OpenDoor" 、"make_by_id" 轉換成 "MakeById"。
48. 要求寫一段程序,實現以下數組arr1轉換成數組arr2:
49. 如何將一個數組元素的排列順序反轉過來(例如以下代碼反轉以后的順序是: array ('d','c', 'b', 'a'))? (選擇 2 個答案)
A. array_flip()
B. array_reverse()
C. sort()
D. rsort()
答案:BD
50.?val=max(′string′,array(2,5,7),42);val 值為
array(2,5,7)
max 用法示例如下:
51. 定義常量 MYPI=3.14_________________________;
define("MYPI",3.14);
52. 簡述單引號和雙引號的用法
雙引號串中的內容可以被解釋而且替換,而單引號串中的內容總被認為是普通字符。
53. Switch 完整語法和注意事項
使用 Switch 語句可以避免冗長的 if..elseif..else 代碼塊,case只能處理整數,或者能像整數一樣運算的類型,比如char,使用時case 后用'',注意 break不能少,default是為了處理一些之前沒有包含到的情況,這樣更為安全。
54. 用 PHP 編寫代碼在頁面輸出當前的北京時間,格式為 “2007-01-18 09:22:03”
date_default_timezone_set('PRC');
echo date("Y-m-d H:i:s",time());
55. 簡述 GBK、GB2312、BIG5 、GB18030
GB2312 支持的漢字較少,GBK 是相比 GB2312 漢字更為豐富,包括全部中日韓漢字,GB18030 相比 GBK 增加了一些少數名族漢字漢字庫更為多樣,但是常人很難用到,一般簡體中文使用 GBK 而繁體中文使用 BIG5。
56. 計算某段字符串中某個字符出現的次數(例如 : gdfgfdgd59gmkblg 中 g 的次數)
$text = 'gdfgfdgd59gmkblg'; echo substr_count ( $text,'g');57. 以下語句可能存在錯誤,如果存在錯誤請指出什么錯誤(每個語句單獨考慮)
print_r $val = 333;// error,print_r 是一個函數,需加上括號,如果是 print 則可以
print_r($val = 333);?// 正確
$a += ($b = 4) + 5;// notice,a未定義,但可以正確運行‘foo[bar] = 'enemy';// notice,最好 bar 加上引號function x($a = "1", $b){}`// 無,但給參數默認值應盡量從右向左
58. 寫出如下程序的輸出結果(小米)
59. 寫出如下程序的輸出結果
60. 寫出如下程序的輸出結果
aaaa
61. 寫出如下程序的輸出結果
501
分析:
在 PHP 中,作用域是不重疊的,函數之外的是全局變量,函數內部定義的則是局部變量,二者是兩個不同的變量,除非在函數內使用 global 顯式聲明使用全局變量或直接用$_GLOBALS 來引用。
62. 寫出如下程序的輸出結果
52
63. 寫出如下程序的輸出結果
12
64.?arr=array(′james′,′tom′,′symfony′);請將′jack′添加到arr 數組的開頭,并把 jack 打印出來。
array_unshift($arr,’jack’); echo $arr[0];65.?arr=array(′james′,′tom′,′symfony′);請將arr 數組的值用 ’,’分割并合并成字符串輸出?
echo implode(‘,’,$arr);
66.?str=‘jack,james,tom,symfony′;請將str 用’,’分割,并把分割后的值放到$arr 數組中?
$arr = explode(‘,’,$str);
67.?arr=array(3,7,2,1,′d′,′abc′);請將arr 按照從大到小的順序排序,并保持其鍵值不變?
arsort($arr); print_r($arr);68. $mail = “gaofei@163.com”; 請將此郵箱的域(163.com)取出來并打印,看最多能寫出幾種方法?
echo strstr($mail,'163'); echo substr($mail,7); echo substr($mail, strpos($mail, '@')+1); $arr = explode("@",$mail); echo $arr[1];69. PHP 中的注釋的寫法,要列出三種?
// 注釋內容?C 風格的單行注釋
# 注釋內容?unix 風格的單行注釋
/* 注釋內容 */?C 風格的多行注釋
70. 如何在一個 php 函數中使用具有全局屬性的變量,說出兩種方式?
global $a 或者 $GLOBALS['a']
71. 若$aa='aa';則 print('aa is \'aa\''."
")會輸出什么?
aa is 'aa'
72. 如何把$a = ‘123’轉化成 123,列出兩種方式?
相關題目:字符串怎么轉成整數,有幾種方法?怎么實現?
73. 說說 break 和 continue 可以用在哪些語句里,并且列出二者的區別?
break 和 continue 可以用在 switch 語句中,或是循環結構中
它們的區別主要是體現在循環語句中,break 表示 跳出整個循環,不再執行,循環將終止,而 continue 則表示跳出本次循環,繼續下一次的循環,不會終止循環。
74. 函數中的默認參數位置如何放置?
當使用默認參數時,任何默認參數必須放在任何非默認參數的右側;否則,函數將不會按照預期的情況工作。
75. 如何往一個數組后面添加一個值?列出兩種方式?
$arr[ ] = $value; array_push($arr, $value);[!!!]76. 說出數組涉及到的常用函數。
array --聲明一個數組
count -- 計算數組中的單元數目或對象中的屬性個數
foreach -- 遍歷數組
list -- 將數組中元素的值賦值給變量,批量聲明變量
explode -- 將字符串轉成數組
implode -- 將數組轉成一個新字符串
array_merge -- 合并一個或多個數組
is_array -- 檢查是否是數組
print_r -- 輸出數組
sort -- 數組排序
array_keys -- 返回數組中所有的鍵名
array_values -- 返回數組中所有的值
key -- 從關聯數組中取得鍵名
[!!!]77. 字符串的常用函數?
trim()-- 去除字符串首尾處的空白字符(或者其他字符)
strlen()-- 字符串長度
substr()-- 截取字符串
str_replace()-- 替換字符串函數
strstr()-- 查找字符串的首次出現位置,返回 第一次出現的位置開始到結尾的字符串
explode()-- 將字符串分割成數組
implode()-- 將數組分割成字符串
str_repeat() -- 重復一個字符串
addslashes() -- 轉義字符串
htmlspecialchars() -- HTML 實體轉義
78. 以下代碼的執行后是,$result 值為:(奇矩互動)
A. a
B. false
C. true
D. b
E. c
答案:B
mixed array_rand( array $input [, int $num_req ] )
從數組中隨機取出一個或多個單元,它接受 input 作為輸入數組和一個可選的參數num_req,指明了你想取出多少個單元 - 如果沒有指定,默認為 1。
如果你只取出一個,array_rand() 返回一個隨機單元的鍵名,否則就返回一個包含隨機鍵名的數組。
所以使用 array_rand 函數,返回結果要么是鍵名,要么是數組,在這個例子中,數組是索引數組,所以返回的是整型。
79. 以下代碼的執行后是,$result 值為: (奇矩互動)
A. 1
B. 2
C. 3
D. 4
E. 5
答案:B
80. php 函數名是否區分大小寫? (奇矩互動)
A. 不區分
B. 區分
答案:A
函數名是大小寫無關的,不過在調用函數的時候,通常使用其在定義時相同的形式。
81.以下代碼的執行后是,$result 值為:(奇矩互動)
A. null
B. true
C. false
D. 1
答案:C
is_null -- 檢測變量是否為 NULL,如果變量是 null 則返回 TRUE,否則返回 FALSE。
在下列情況下一個變量被認為是 NULL:
82. 翻轉字符串中的單詞,字符串僅包含大小寫字母和空格,單詞間使用空格分隔。如 :輸入"This is PHP",輸出"PHP is This"(非必要請不要使用 PHP 自帶函數) (小米)
83. 請列舉出你所知道的全局環境變量 (億郵)
$_ENV;
$_SERVER;
$_REQUEST;
$_FILES;
$_SESSION;
$_COOKIE;
$_GET;
$_POST;
$GLOBALS;
84. 設有這樣一個數組$a=array(array(id=>0),array(id=>1),array(id=>2)......)id=>0-10000,請問你如何使用 PHP 判斷 id=>500 是否在這個數組內? (億郵)
使用 in_array 函數,代碼如下:
85. 在 PHP 中兩個數組怎么連接合并在一起 (億郵)
使用 array_merge()函數
86. 運行以上代碼后$a $b $c 分別是? (卓望)
a為false,b = $c = 0
轉載于:https://www.cnblogs.com/shenzikun1314/p/8268692.html
總結
以上是生活随笔為你收集整理的php面试题之三——PHP语言基础(基础部分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 没有目标,永远也找不到人生方向
- 下一篇: php技术经理工作计划范文,技术个人工作