關于PHP字符串的一道面試題

我們來看一段簡單的代碼:

<?php
$str = 'php';
$str['name'] = array('dogstart');
var_dump($str);

認真思索下裆赵,上面的代碼會輸出什么?如果你已經(jīng)有答案了浴麻,那么就可以關閉這遍文章了,否則咱們一步一步的來看看最終會輸出什么囤攀。

基礎回顧

在開始做題前软免,我們先來想想php中存在的變量類型:

  • Boolean 布爾類型
  • Integer 整型
  • Float 浮點型
  • String 字符串
  • Array 數(shù)組
  • Object 對象
  • Resource 資源類型
  • NULL
  • Callback / Callable類型

參考文檔:PHP類型

在PHP中string的實現(xiàn)方式是一個由字節(jié)組成的數(shù)組再加上一個整數(shù)指明緩沖區(qū)長度(注意,PHP是不能改變原字符串長度的)焚挠。

我們接著來看我們的題目膏萧,第一行代碼很正常,關鍵的部分是在第二行:

$str['name'] = array('dogstart');

我們先看等號左邊的代碼蝌衔,既然PHP的字符串是由數(shù)組組成的榛泛,我們知道PHP中數(shù)組的key可以是integer和string,但是在字符串中胚委,我們只能通過integer 下標來訪問每個字符挟鸠,所以這個地方的'name'最終會被轉換成數(shù)字:

intval('name');

PHP文檔中定義了,字符串轉為數(shù)字時亩冬,字符串的開始部分決定了轉換后的值艘希。如果該字符串以合法的數(shù)值開始硼身,則使用該數(shù)值,否則為0覆享。

所以上面的代碼的最終結果為0佳遂,利用數(shù)學中的代入法,第二行的代碼就變成了:

$str[0] = array('dogstar');

我們接下來再看看第二行右邊的代碼撒顿,由于字符串中只能存在字符串丑罪,所以右邊的代碼會被轉換成字符串:

strval(array('dogstar'));

轉換結果為'Array',這個時候第二行代碼就成了:

$str[0] = 'Array';

由于字符串長度是固定的凤壁,所以這個地方只能存放一個字符吩屹,所以'Array'中的字符賦值到$str[0]中只會保留第一個字符,其余的都將被拋棄拧抖。所以我們的代碼就變成了:

<?php
$str = 'php';
$str[0] = 'A';
var_dump($str);

這個時候就可以一眼看出最終的輸出結果為'Ahp'煤搜。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市唧席,隨后出現(xiàn)的幾起案子擦盾,更是在濱河造成了極大的恐慌,老刑警劉巖淌哟,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件迹卢,死亡現(xiàn)場離奇詭異,居然都是意外死亡徒仓,警方通過查閱死者的電腦和手機腐碱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蓬衡,“玉大人喻杈,你說我怎么就攤上這事≌恚” “怎么了筒饰?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長壁晒。 經(jīng)常有香客問我瓷们,道長,這世上最難降的妖魔是什么秒咐? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任谬晕,我火速辦了婚禮,結果婚禮上携取,老公的妹妹穿的比我還像新娘攒钳。我一直安慰自己,他們只是感情好雷滋,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布不撑。 她就那樣靜靜地躺著文兢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪焕檬。 梳的紋絲不亂的頭發(fā)上姆坚,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機與錄音实愚,去河邊找鬼兼呵。 笑死,一個胖子當著我的面吹牛腊敲,可吹牛的內容都是我干的击喂。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼碰辅,長吁一口氣:“原來是場噩夢啊……” “哼茫负!你這毒婦竟也來了?” 一聲冷哼從身側響起乎赴,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎潮尝,沒想到半個月后榕吼,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡勉失,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年羹蚣,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乱凿。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡顽素,死狀恐怖,靈堂內的尸體忽然破棺而出徒蟆,到底是詐尸還是另有隱情胁出,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布段审,位于F島的核電站全蝶,受9級特大地震影響,放射性物質發(fā)生泄漏寺枉。R本人自食惡果不足惜抑淫,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望姥闪。 院中可真熱鬧始苇,春花似錦、人聲如沸筐喳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蓄氧,卻和暖如春函似,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背喉童。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工撇寞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人堂氯。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓蔑担,卻偏偏與公主長得像,于是被迫代替她去往敵國和親咽白。 傳聞我的和親對象是個殘疾皇子啤握,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內容

  • 前言 最先接觸編程的知識是在大學里面排抬,大學里面學了一些基礎的知識,c語言授段,java語言蹲蒲,單片機的匯編語言等;大學畢...
    oceanfive閱讀 3,080評論 0 7
  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向對象的用電信息數(shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,974評論 6 13
  • 一侵贵、php可以做什么 php是一種可以在服務器端運行的編程語言届搁,可以運行在Web服務器端。 php是一門后臺編程語...
    空谷悠閱讀 3,098評論 4 97
  • 偶爾矯情經(jīng)常理性閑著瞎想忙著心累想要快樂卻有代價生前何必久睡多奮斗個幾年那么你一定記得等等我啊
    憨人是我呀閱讀 182評論 0 0
  • 母親和父親久居老家鄉(xiāng)下窍育,他們年紀大了卡睦,但是閑不住,仍會干些力所能及的農活漱抓。在我們家老房子的北側有一片空...
    五百文閱讀 1,242評論 10 32