1
<?php
echo -10%3;
?>
答案:-1。
考查:優先級。
因為-的優先級比%求余的優先級低,也就是-(10%3)。
2
print (int)pow(2,32);
答案:
3
//file1.php
<?php
$a = '123';
?>
//file2.php
<?php
echo include('file1.php');
?>
答案:1.
考查:返回值。
因include()也是一個函數,有返回值。在成功時返回1,失敗時返回錯誤信息。如果被包含的文件有return,則inculde()成功時返回該文件的返回值。
4
<?php
$count = 5;
function get_count() {
static $count = 0;
return $count++;
}
++$count;
get_count();
echo get_count();
?>
答案:1.
考查:static和++。
因static $count,所以只在第一次調用get_count的時候對$count賦值為0,第二次再進來這個函數,則不會第二次賦值。其次就是return $count++和return ++$count了,前者先返回,后者先++再返回。
5
<?php
$arr = array(0 =>1,'aa' => 2,3,4);
foreach($arr as $key => $val){
print($key == 'aa' ? 5 : $val);
}
?>
答案:5534.
考查:類型轉換。
因遍歷數組第一次的時候,$key和aa的比較實際就是0和aa的比較,一個是int一個是string,這個時候會轉換類型,將字符串轉換為數字再與數字比較。所以0=='aa'就是0==0,所以為true,也就是輸出5。雖然PHP是若類型語言,但是人家也有類型的好嗎。
6
<?php
echo count (false);
$a = count ("567") + count(null) + count(false);
echo $a;
?>
答案:2.
考查:count的用法。
因count()的官方解釋“If the parameter is not an array or not an object with implemented Countable interface, 1 will be returned.”.意思是說,如果不是數組或者對象的其他類型,返回1.那么這個值應該就是1+0+1了(boolen人家也是一個類型,雖然是討厭的false)。NULL的意思是沒有值,難道在計數函數中還能有1?
7
<?php
$arr = array(1,2,3);
foreach($arr as &$val) {
$val += $val % 2 ? $val++ : $val--;
}
$val = 0;
print(join('',$arr));
?>
答案:330。
考查:++和&。
因foreach結束后的數組應該是array(3,3,7);最后給第三個元素賦值為0,所以就是330了。其中注意的是&,如果有&則是對原變量操作,如果沒有,則是先生成一個新變量,然后給這個變量復制,最后操作的是這個新變量。
8
<?php
echo intval((0.1+0.7)*10);
?>
答案:7。
考查:浮點數的概念。
因0.1+0.7=0.8 0.810=8 所以轉換成整數后還是8?錯!因為0.1+0.7=0.8是浮點數,0.810在數學計算中是正整數8,可是在計算機中它仍然是浮點數8,什么叫浮點數8?每一個看起來像整數的浮點數,其實都不是整數,比如這個8,它其實只是7.9999循環,無限接近于8,轉換成整數會舍棄小數部分,就是7嘍。
9
<?php
ini_set('display_errors',0);
$arr = array(1=>1,3=>3);
$i = 2;
$a = 'test' . isset($arr[$i]) ? $arr[$i] : $i;
請問$a的值是什么?
A、test B、NULL C、2 D、test2
?>
答案:B。
考查:優先級。
因“."的優先級高于三元運算符"?:"。所以程序其實報錯了。會說$arr的索引2不存在。
10
<?php
$a = 3;
$b = 5;
if($a = 5 || $b = 7) {
$a++;
$b++;
}
echo $a . " " . $b;
?>
A、6 8 B、6 6 C、2 6 D、1 6 E、4 6
答案:D。
考查:優先級,基礎概念,++。
因“="的優先級低于“||”,所以先邏輯判斷再賦值。也就是($a = (5 || $b = 7))。所以,最后其實給a賦值了,$a等于1.
11
<?php
$x = 2;
echo $x == 2 ? '我' : $x == 1 ? '你' : '它';
?>
輸出的結果是()
A、我
B、你
C、它
D、syntax error
答案:B。
考查:優先級。
因“=="的優先級高于“?:”。我已經不想說為什么了,整理一下這種東西,我感覺要瘋了,除了筆試題外估計也不會遇到了吧。