1、如下代碼的正確執行結果是?
答:”yabadabadoo” does not contains “yaba” 講解:strpos(string $haystack , mixed $needle )函數的功能是:返回needle在haystack中首次出現的位置,未找到返回false,但也有可能返回等同於false的非布爾值。比如逐個例子中返回的就是0(字符串位置是從0開始)。而在php中0等同於false。 如想使代碼正確運行: If(strpos($tsr1,$str2)) 改為 If(strpos($tsr1,$str2) !== false) 即可 2、下面的輸出結果會是怎樣? $x =5; echo $x; Echo $x+++$x++; Echo $x; Echo $x---$x--; Echo $x; 答案:5 11 7 1 5 講解:$x++ 和 $x-- 是先返回它本身的值,然后在自增。並且 ++ 運算的優先級比 --運算的優先級要高。所以 “$x+++$x++”等同於 “5+6”;而 “$x---$x--” 等同於 “7-6”。 3、請問 $a 和 $b 的值各是多少? $a = ‘1’; $b = &$a; $b = “2$a”; 答案:$a = 21 $b =21 。 講解:$b是對$a的引用。所以$b 和 $a 共用一個變量地址。所以當修改$b的時候也會修改$a的值。 4、寫出下面代碼的結果是ture還是false。 Var_dump(0123 == 123); Var_dump(‘0123’ == 123); Var_dump(‘0123’ === 123); 答案:false ture false。 講解:0123會被當作8進制來處理,在轉成10進制就是83 ,當然不相等。 ‘0123’會從字符串轉成數值型,並且去掉前邊的0,所以,123 == 123 。 ===是全等比較。字符串和數值型當然不全等。 5、下面的代碼有什么問題?輸出會是什么?怎樣修復它? $referenceTable = array(); $referenceTable['val1'] = array(1,2); $refenenceTable['val2'] = 3; $referenceTable['val3'] = array(4,5); $testArray = array(); $testArray = array_merge($testArray,$referenceTable['val1']); var_dump($testArray); $testArray = array_merge($testArray,$referenceTable['val2']); var_dump($testArray); $testArray = array_merge($testArray,$referenceTable['val3']); var_dump($testArray); 答案:array(2) { [0]=> int(1) [1]=> int(2) } Warning: array_merge(): Argument #2 is not an array in E:\www\ceshi.php on line 19 NULL Warning: array_merge(): Argument #1 is not an array in E:\www\ceshi.php on line 21 NULL 講解:array_merge()函數的參數只接受數組類型。如果不是則會返回null。第三次雖然傳的參數是數組,但是$testArray已經變成了null。所以結果仍然是空。 正確修改(將參數強制轉換成array類型): $testArray = array_merge($testArray,(array)$referenceTable['val1']); var_dump($testArray); $testArray = array_merge($testArray,(array)$referenceTable['val2']); var_dump($testArray); $testArray = array_merge($testArray,(array)$referenceTable['val3']); var_dump($testArray); 6、$x 應該輸出什么? $x = true and false; Var_dump($x); 答案:bool(true) 講解:這里考察的運算的優先級。 = 比and 優先級高一點。 所以等同於下面的代碼: $x = true; True and false; 答案顯而易見。 7、經過下面的運算,$x的值應該是多少? $x = 3 + “15%” + “$25”; 答案:18 講解:當字符串與數字進行數學運算的時候,php會將字符串轉換成數字。如果是數字開頭的話會轉成數字,例如 “15%”被轉成15。而非數字開頭的將被轉成0,例如”$25”被轉成0。所以上述代碼相當於 $x = 3 + 15 + 0 ,結果就是18. 8、運行下面的代碼,$text的值是多少?Strlen($text)又會返回什么結果?
答案: $text = John D strlen($text) = 11 講解:$text[10] = 'Doe' 當給某個字符串具體的某個位置賦值具體字符,所以只會把D傳給$text的第10個位置。所以結果是 John(五個空格)D。長度為11。 9、下面的輸出結果會是什么?
$m) > $v) echo “yes”; else echo “no”; ?> 答案: no 講解:($l > $m)的結果是true,也就是1。1當然不比1大,所以結果為 no。 10、執行下面的代碼$x會變成什么值呢?
答案: 0 講解:'0xFF' == 255中會將 ’0xFF’ 當成16進制來換算,轉成10進制數字,使用的是is_numeric_string ,結果0xFF =255 ,所以判斷結果為真,繼續執行(int)'0xFF'。但將0xFF轉換成數字的時候,使用的是convert_to_long,所以是將0xFF當成字符串從左到右進行轉換,遇到非數字則停止,所以轉換結果是0。