- 數(shù)組的概念是什么?數(shù)組根據(jù)索引分為哪兩種,如何區(qū)分?數(shù)組的賦值方式有哪兩種?
數(shù)組是一個(gè)可以存儲(chǔ)一組或一系列數(shù)值的變量(復(fù)合型變量)
索引數(shù)組(索引值為數(shù)字,以0開(kāi)始)和關(guān)聯(lián)數(shù)組(以字符串作為索引值)
數(shù)組的賦值方式有哪兩種?
數(shù)組的聲明方式主要有兩種。
1.通過(guò)array()函數(shù)聲明數(shù)組;可以通過(guò)key=>value的方式分別定義索引和值,也可以不定義數(shù)組的索引下標(biāo),只給出數(shù)組的元素值。
2.直接為數(shù)組元素賦值,不需要調(diào)用array()函數(shù)。
例如: $arr[0] = 1; $arr[1] = 2;
特別注意:
數(shù)組的下標(biāo)如果是等價(jià)于整數(shù)的字符串值(但不能以0開(kāi)頭),則會(huì)被當(dāng)作整數(shù)對(duì)待。
例如: $array[3] 與 $array['3'] 引用的是相同的一個(gè)元素,而 $array['03'] 引用的則就是另外的一個(gè)元素了。
32.數(shù)組如何遍歷?
①for循環(huán)
②foreach循環(huán) ,這是最常用的遍歷方式。用法如下:foreach($arr as $key=>$value){}
③list each 和while 配合起來(lái)循環(huán)
- foeach數(shù)組的時(shí)候指針是如何指向的?list()/each()/while()循環(huán)數(shù)組的時(shí)候指針如何指向的呢?
當(dāng)foreach開(kāi)始執(zhí)行的時(shí)候,數(shù)組內(nèi)部的指針會(huì)自動(dòng)指向第一個(gè)單元。因?yàn)閒oreach所操作的是指定數(shù)組的拷貝,而不是該數(shù)組本身。而each()一個(gè)數(shù)組后,數(shù)組指針將停留在數(shù)組中的下一個(gè)單元或者碰到數(shù)組結(jié)尾時(shí)停留在最后一個(gè)單元。如果要再次使用each()遍歷數(shù)組,必須要使用reset(). reset()將數(shù)組的內(nèi)部指針倒回到第一個(gè)單元并返回第一個(gè)數(shù)組單元的值。
- 如何計(jì)算數(shù)組長(zhǎng)度(或者說(shuō)計(jì)算數(shù)組中所有元素的個(gè)數(shù))?字符串怎么取長(zhǎng)度?
count() -- 計(jì)算數(shù)組中的元素個(gè)數(shù)。 可以使用count(數(shù)組名)或者count(數(shù)組名,1),如果有第二個(gè)參數(shù),并且是數(shù)字1,則表示遞歸統(tǒng)計(jì)數(shù)組元素的個(gè)數(shù)。如果第二個(gè)參數(shù)是數(shù)字0,則等同于只有一個(gè)參數(shù)的count()函數(shù)。
sizeof() -- count() 的別名(count — 計(jì)算數(shù)組中的單元數(shù)目或?qū)ο笾械膶傩詡€(gè)數(shù))字符串:
strlen()— 獲取字符串長(zhǎng)度
mb_strlen()— Get string length
- 數(shù)組中相關(guān)的常用函數(shù)有哪些?
1) count --(sizeof別名)— 計(jì)算數(shù)組中的單元數(shù)目或?qū)ο笾械膶傩詡€(gè)數(shù) 例如:int count ( mixed $var [, int $mode ] ) $var 通常都是數(shù)組類型,任何其它類型都只有一個(gè)單元。 $mode 默認(rèn)值為0. 1為開(kāi)啟遞歸地對(duì)數(shù)組計(jì)數(shù)
2) in_array ( mixed $needle , array $haystack [, bool $strict ] ) — 檢查數(shù)組中是否存在某個(gè)值。如果 needle 是字符串,則比較是區(qū)分大小寫的。如果第三個(gè)參數(shù) strict 的值為 TRUE 則 in_array() 函數(shù)還會(huì)檢查 needle 的類型是否和 haystack 中的相同。
3) array_merge(array $array1 [, array $array2 [, array $... ]] ) 將一個(gè)或多個(gè)數(shù)組的單元合并起來(lái),一個(gè)數(shù)組中的值附加在前一個(gè)數(shù)組的后面。返回作為結(jié)果的數(shù)組。 特別注意:如果輸入的數(shù)組中有相同的字符串鍵名,則該鍵名后面的值將覆蓋前一個(gè)值。然而,如果數(shù)組包含數(shù)字鍵名,后面的值將不會(huì)覆蓋原來(lái)的值,而是附加到后面. 如果只給了一個(gè)數(shù)組并且該數(shù)組是數(shù)字索引的,則鍵名會(huì)以連續(xù)方式重新索引!
4) 數(shù)組與字符串之間的轉(zhuǎn)換 (1)explode ( string $separator , string $string [, int $limit ] ) 使用一個(gè)分隔字符來(lái)分隔一個(gè)字符串。 (2)implode ( string $glue , array $arr ) 使用一個(gè)連接符將數(shù)組中的每個(gè)單元連接為一個(gè)字符串。join 為 implode 的別名
5) sort(array &$array [, int $sort_flags ]) — 對(duì)數(shù)組按照值排序,當(dāng)本函數(shù)結(jié)束時(shí)數(shù)組單元將被從最低到最高重新安排。
- 數(shù)組合并函數(shù)array_merge()和數(shù)組加法運(yùn)算$arr + $arr2 的區(qū)別是什么?
array_merge()->使用array_merge(),如果是關(guān)聯(lián)數(shù)組合并,如果數(shù)組的鍵名相同,那么后面的值將覆蓋前者;如果是數(shù)字索引數(shù)組合并,則不覆蓋,而是后者附加到前者后面。
"+"->使用數(shù)組加法運(yùn)算,與array_merge()不同,加法運(yùn)算不管是關(guān)聯(lián)數(shù)組還是數(shù)字索引數(shù)組,都是將相同鍵名的的值舍棄,也就是只保留首次出現(xiàn)該鍵名的元素,后來(lái)的具有相同鍵名的元素都不會(huì)被加進(jìn)來(lái)。
- 字符串定義的時(shí)候單引號(hào)和雙引號(hào)有什么區(qū)別?
單引號(hào)加載速度比雙引號(hào)加載速度快.
- echo(),print(),print_r()的區(qū)別?
(1)echo 是語(yǔ)法,Output one or more strings,沒(méi)有返回值;
(2)print 是函數(shù),不能輸出數(shù)組和對(duì)象,Output a string,print有返回值;
(3)print_r 是函數(shù),可以輸出數(shù)組。print_r是個(gè)比較有意思的函數(shù),可以輸出stirng、int、float、array、object等,輸出array時(shí)會(huì)用結(jié)構(gòu)表示,print_r輸出成功時(shí)返回true;而且print_r可以通過(guò)print_r($str,true)來(lái),使print_r不輸出而返回print_r處理后的值。此外,對(duì)于echo和print,基本以使用echo居多,因?yàn)槠湫时萷rint要高。
- 按照功能分類說(shuō)說(shuō)都有哪些字符串處理函數(shù)?這些函數(shù)的作用是什么?
A. 字符串輸出函數(shù)
(1)echo $a,$b,$c......; 是一個(gè)語(yǔ)言結(jié)構(gòu),而不是一個(gè)真正的函數(shù)。
(2)print($a) 本函數(shù)輸出字符串。若成功則返回 1,失敗返回 0
(3)print_r($a)
(4)var_dump($a); 能輸出類型、長(zhǎng)度、值
B. 去除字符串首尾空格的函數(shù): trim ltrim rtrim(別名:chop) 使用第二個(gè)參數(shù),還可以去除指定的字符。
C. 轉(zhuǎn)義字符串函數(shù):addslashes()
D. 獲取字符串長(zhǎng)度的函數(shù):strlen()
E. 截取字符串長(zhǎng)度的的函數(shù):substr()
F. 檢索字符串函數(shù): strstr() , strpos()
G. 替換字符串函數(shù):str_replace()
- 請(qǐng)給出以下問(wèn)題的正確答案?
1).$arr = array('james', 'tom', 'symfony');請(qǐng)將$arr數(shù)組的值用’,’分割并合并成字符串輸出?
echo implode(‘,’,$arr);
2).$str = ‘jack,james,tom,symfony’; 請(qǐng)將$str用’,’分割,并把分割后的值放到$arr數(shù)組中?
$arr = explode(‘,’,$str);
3).$arr = array(3,7,2,1,’d’,’abc’);
請(qǐng)將$arr按照從大到小的順序排序,并保持其鍵值不變? arsort($arr); print_r($arr);
4).$mail = “[gaofei@163.com](mailto:gaofei@163.com)”;
請(qǐng)將此郵箱的域(163.com)取出來(lái)并打印,看最多能寫出幾種方法?
echo strstr($mail,'163');
echo substr($mail,7);
$arr = explode("@",$mail); echo $arr[1];
5). 如果有一個(gè)字符串,該字符串是“123,234,345,”。請(qǐng)問(wèn)如何切割掉這個(gè)字符串最后一個(gè)逗號(hào)?
6). 獲取隨機(jī)數(shù)的函數(shù)有哪幾個(gè)?mt_rand() 和 rand()哪個(gè)執(zhí)行速度快?
轉(zhuǎn)自:http://bbs.itheima.com/forum.php?mod=viewthread&tid=301780&extra=page%3D1