php面試題:數(shù)組

數(shù)組的key 會有如下的強制轉換:

  • 包含有合法整型值的字符串會被轉換為整型。例如鍵名 "8" 實際會被儲存為 8厂汗。但是 "08" 則不會強制轉換委粉,因為其不是一個合法的十進制數(shù)值。
  • 浮點數(shù)也會被轉換為整型面徽,意味著其小數(shù)部分會被舍去艳丛。例如鍵名 8.7 實際會被儲存為 8匣掸。注意:字符浮點會當做字符串處理趟紊,不轉為整型
  • 布爾值也會被轉換成整型。即鍵名 true 實際會被儲存為 1 而鍵名 false 會被儲存為 0碰酝。
  • Null 會被轉換為空字符串霎匈,即鍵名 null 實際會被儲存為 ""
  • 數(shù)組和對象不能被用為鍵名送爸。堅持這么做會導致警告:Illegal offset type铛嘱。
  • 多個同key數(shù)組暖释,替換原則為最后一個值替換原來的值,數(shù)組順序不會因此改變墨吓。

示例

#
$array = array(
    1    => "a",
    "1"  => "b",
    1.5  => "c",
    true => "d",
);
var_dump($array);

答案

array(1) {
  [1]=>
  string(1) "d"
}
#因為每次都是被覆蓋

示例

$array = array(
    "foo" => "bar",
    "bar" => "foo",
    100   => -100,
    -100  => 100,
);
var_dump($array);

答案:

array (size=5)
  'foo' => string 'bar' (length=3)
  'bar' => string 'foo' (length=3)
  100 => int -100
  -100 => int 100
  101 => int 100

如果對給出的值沒有指定鍵名球匕,則取當前最大的整數(shù)索引值,而新的鍵名將是該值加一帖烘。如果指定的鍵名已經有了值亮曹,則該值會被覆蓋。


示例

$array = array(
         "a",
         "b",
    6 => "c",
         "d",
);
var_dump($array);

答案:

array(4) {
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [6]=>
  string(1) "c"
  [7]=>
  string(1) "d"
}

示例

$array = array(
         "a",
    "0" => "b",
    "H" => "c",
         "d",
);
var_dump($array);

答案:

array (size=3)
  0 => string 'b' (length=1)
  'H' => string 'c' (length=1)
  1 => string 'd' (length=1)
# a被溢出

方括號和花括號可以互換使用來訪問數(shù)組單元(例如 array[42] 和array{42} 在上例中效果相同)秘症。


示例

$array = array(1, 2, 3, 4, 5);
foreach ($array as $i => $value) {
    unset($array[$i]);
}
$array[] = 6;
#1
echo $array[5];

#2
echo $array[1];

$array = array_values($array);
$array[] = 7;

#3
print_r($array);

答案:

#1:5
#2:報錯
#3:Array
(
    [0] => 6
    [1] => 7
)

如上所述照卦,如果給出方括號但沒有指定鍵名,則取當前最大整數(shù)索引值乡摹,新的鍵名將是該值加上 1(但是最小為 0)役耕。如果當前還沒有整數(shù)索引,則鍵名將為 0聪廉。
注意這里所使用的最大整數(shù)鍵名不一定當前就在數(shù)組中瞬痘。它只要在上次數(shù)組重新生成索引后曾經存在過就行了。以下面的例子來說明:
array_values()重新索引數(shù)組


不建議的寫法

<?php
$foo[bar] = 'enemy';
echo $foo[bar];
// etc
?>

這樣是錯的板熊,但可以正常運行图云。那么為什么錯了呢?原因是此代碼中有一個未定義的常量(bar)而不是字符串('bar'-注意引號)邻邮,而 PHP 可能會在以后定義此常量竣况,不幸的是你的代碼中有同樣的名字。它能運行筒严,是因為 PHP 自動將裸字符串(沒有引號的字符串且不對應于任何已知符號)轉換成一個其值為該裸字符串的正常字符串丹泉。例如,如果沒有常量定義為 bar鸭蛙,PHP 將把它替代為 'bar' 并使用之摹恨。
這并不意味著總是給鍵名加上引號。用不著給鍵名為常量或變量的加上引號娶视,否則會使 PHP 不能解析它們晒哄。比如以下代碼:

$key="name";
$arr=array("name"=>"zhangsan");
echo $arr[$key];
#$key 本身為字符串。所以是正確的寫法肪获。

以下寫法也是正確的

<?php
function name($key)
{
    return $key;
}
$arr=array("name"=>"zhangsan");
echo $arr[name("name")];
?>

重申一次寝凌,在雙引號字符串中,不給索引加上引號是合法的因此$foo[bar]是合法的(“合法”的原文為 valid孝赫。在實際測試中较木,這么做確實可以訪問數(shù)組的該元素,但是會報一個常量未定義的 notice青柄。無論如何伐债,強烈建議不要使用 foo[bar]這樣的寫法预侯,而要使用foo['bar'] 來訪問數(shù)組中元素。--haohappy 注)峰锁。至于為什么參見以上的例子和字符串中的變量解析中的解釋萎馅。


php在線面試題集:http://cainiaophp.com/
php面試討論群:536633782

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市虹蒋,隨后出現(xiàn)的幾起案子校坑,更是在濱河造成了極大的恐慌,老刑警劉巖千诬,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耍目,死亡現(xiàn)場離奇詭異,居然都是意外死亡徐绑,警方通過查閱死者的電腦和手機邪驮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來傲茄,“玉大人毅访,你說我怎么就攤上這事∨陶ィ” “怎么了喻粹?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長草巡。 經常有香客問我守呜,道長,這世上最難降的妖魔是什么山憨? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任查乒,我火速辦了婚禮,結果婚禮上郁竟,老公的妹妹穿的比我還像新娘玛迄。我一直安慰自己,他們只是感情好棚亩,可當我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布蓖议。 她就那樣靜靜地躺著,像睡著了一般讥蟆。 火紅的嫁衣襯著肌膚如雪勒虾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天攻询,我揣著相機與錄音从撼,去河邊找鬼州弟。 笑死钧栖,一個胖子當著我的面吹牛低零,可吹牛的內容都是我干的。 我是一名探鬼主播拯杠,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼掏婶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了潭陪?” 一聲冷哼從身側響起雄妥,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎依溯,沒想到半個月后老厌,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡黎炉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年枝秤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慷嗜。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡淀弹,死狀恐怖,靈堂內的尸體忽然破棺而出庆械,到底是詐尸還是另有隱情薇溃,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布缭乘,位于F島的核電站沐序,受9級特大地震影響,放射性物質發(fā)生泄漏堕绩。R本人自食惡果不足惜薄啥,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望逛尚。 院中可真熱鬧垄惧,春花似錦、人聲如沸绰寞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滤钱。三九已至觉壶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間件缸,已是汗流浹背铜靶。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留他炊,地道東北人争剿。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓已艰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蚕苇。 傳聞我的和親對象是個殘疾皇子哩掺,可洞房花燭夜當晚...
    茶點故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,151評論 0 13
  • 一涩笤、數(shù)組定義 array() 1嚼吞、索引數(shù)組 在一個變量中,存儲一個或多個值蹬碧。數(shù)組中的每一個元素都有一個訪問ID舱禽,根...
    竹與豆閱讀 535評論 0 0
  • 1.strlen()與mb_strlen()的作用分別是什么? strlen()和mb_strlen()都是作用于...
    落魄PHP女程序員閱讀 357評論 0 2
  • 今天,5月5日立夏恩沽,小敏卻送上“東莞雪”呢蔫。記得那年,百年一遇的東莞雪惹得莞人欣喜若狅飒筑,剛好放寒假在家片吊,瘋姑...
    小敏樂園閱讀 602評論 4 18
  • 一、tomcat web服務器 tomcat 1.提供數(shù)據(jù)的接收與發(fā)送2.管理網站應用(資源协屡,處理程序)3.we...
    雁_9587閱讀 413評論 0 0