有個(gè)小伙伴去面試php智玻,然后發(fā)了兩個(gè)面試題給我!結(jié)果我全做錯(cuò)了芙代!汗吊奢!趕緊記下來!下次要是有坑還繼續(xù)放在這里链蕊!給自己一個(gè)提醒事甜,如果有可能,也給大家一個(gè)提醒滔韵!基礎(chǔ)很重要奥咔!
下面是第一道題目:
<?php
$count = 12;
$limit = 15;
function get_count(){
static $count = 0;
return $count++;
}
function get_limit($num){
return $num++;
}
if($count = 5 || $limit = 7){
$count++;
$limit = get_limit($limit)+get_count();
}
++$count;
echo get_count().'=='.$count."**".$limit;
本道題目考察的知識(shí)點(diǎn):
- static變量和普通變量的區(qū)別
這個(gè)區(qū)別的話可以參考下面的兩篇博文:
php static 靜態(tài)變量和普通變量的區(qū)別
php四種變量的作用域 - 運(yùn)算符優(yōu)先級(jí)
優(yōu)先級(jí) 可以先看一下官方的手冊(cè):php優(yōu)先級(jí)
- ++i 與i++的區(qū)別
這個(gè)是比較基礎(chǔ)的東西 相信大家應(yīng)該都知道陪蜻!下面的這篇博文講的比較詳細(xì)邦马!
i++與i++的區(qū)別和效率
下面我們直接分步分析這道題目吧:
<?php
$count = 12;
$limit = 15;
function get_count(){
static $count = 0;//靜態(tài)變量,內(nèi)存中只會(huì)有一個(gè)$count,而且只能被初始化一次宴卖,所以在本函數(shù)中$count初始值為0滋将;
return $count++;
}
echo $count ;// 12 這是因?yàn)樽兞孔饔糜虻膯栴}
function get_limit($num){
return $num++;
}
var_dump(($count=5));//int(5)
if($count = 5 || $limit = 7){//|| 一側(cè)為真即為真 后面的就不執(zhí)行了 所以$limit = 7這個(gè)賦值沒運(yùn)行!
echo $count;
$count++;
echo $count;//1 不知道為啥是1..我也很疑惑症昏,哪位大神幫我解答一下随闽。。肝谭。
$limit = get_limit($limit)+get_count();
// 15 + 0 之所以是0 和15 是上面的第三個(gè)知識(shí)點(diǎn)可以看一下掘宪!
}
++$count;
echo get_count().'=='.$count."**".$limit;
//題外話:我發(fā)現(xiàn)get_count()每調(diào)用一次 $count才會(huì)變!所以也只有這個(gè)函數(shù)才會(huì)影響這個(gè)變量的值攘烛!
答案:
1==1**15
第二道題:
<?php
$arr = [0=>1,'aa'=>2,3,4];
foreach($arr as $k => $v){
print($k=='aa'?5:$v);
}
本道題目考察的知識(shí)點(diǎn):
字符串比較的時(shí)候魏滚,如果用==比較的時(shí)候 會(huì)有坑!這其實(shí)是隱式轉(zhuǎn)換的問題坟漱,整型和字符串型比較的時(shí)候會(huì)將字符串隱式轉(zhuǎn)化字符串鼠次!我們可以直接來看一下下面的代碼執(zhí)行結(jié)果
<?php
var_dump(0=='aa');//bool(true)
var_dump(0==='aa');//bool(false)
var_dump(strcmp(0,'aa'));//bool(false)
var_dump(0=='aa1');//bool(true)
var_dump(0=='1aa');//bool(false)
答案:
5534
更新于2017-11-28
感謝@黃海林的指點(diǎn)!關(guān)于下面這段代碼的疑惑已經(jīng)很明白了!這里特別做一次更新腥寇!
if($count = 5 || $limit = 7){
$count++;
$limit = get_limit($limit)+get_count();
}
$count
的類型確實(shí)是bool(true)
成翩,詳情可以看3樓的詳細(xì)分解!
寫在最后的話
如果小伙伴有新的坑的話在評(píng)論中回復(fù)我花颗!或者對(duì)我的理解有異議也可以直接回復(fù)我捕传!謝謝!