例子:請(qǐng)寫(xiě)出echo 3 . print(2) . print(4) . 5 . 'c'的輸出結(jié)果為_(kāi)___?
許多人看到這個(gè)題的第一印象是輸出結(jié)果不就是3245c嘛,然而正確的是答案卻是45c2131,是不是感覺(jué)不可思議桨菜?
想要分析原因首先我們需要明確以下幾點(diǎn):
- PHP中的.連接符是從左向右執(zhí)行的恳谎;
- echo和print輸出都是需要占用io的;
- print函數(shù)有返回值且始終返回1。
- print函數(shù)在打印輸出時(shí)鲤拿,會(huì)清空io存儲(chǔ)
然后我們?cè)賮?lái)分析上面的的語(yǔ)句的執(zhí)行過(guò)程
echo 3 . print(2) . print(4) . 5 . 'c';
程序從左至右執(zhí)行,
第一步:
最初在io存儲(chǔ)處存入 字符串 c,接著遇到5,存入io,此時(shí)io內(nèi)容為5c, echo 在碰到print()時(shí)候?qū)?zhí)行print()搬瑰,即在把 5 放入io存儲(chǔ)后由print(4)將數(shù)字4也同樣壓入io存儲(chǔ)中,此時(shí)io存儲(chǔ)中數(shù)據(jù)為45c跃捣,由于print()為輸出函數(shù)(官方介紹print實(shí)際是語(yǔ)言結(jié)構(gòu),不是函數(shù))夺蛇,所以此時(shí)會(huì)執(zhí)行一次io輸出操作,即輸出 45c 到輸出界面疚漆,清除io存儲(chǔ),io存儲(chǔ)內(nèi)此時(shí)數(shù)據(jù)為''刁赦,print()執(zhí)行完成后返回1,此時(shí)界面上已經(jīng)有了45c,而代碼則變成了
echo 3.print(2).1;
第二步:
同上以此類(lèi)推娶聘,這次會(huì)先將1放入io內(nèi),接著講2放入io內(nèi)甚脉,此時(shí)io內(nèi)的內(nèi)容為21丸升,print執(zhí)行輸出操作,清空io,此時(shí)屏幕相等于已經(jīng)輸了了45c21牺氨,代碼則變?yōu)榱?/p>
echo 3.1;
第三步:
講1和3放入io,此時(shí)io內(nèi)容為31狡耻,echo 將io內(nèi)容輸出到屏幕,此時(shí)最終結(jié)果為45c2131
同類(lèi)例題:
echo 3 . print(2) . print(4) . 5 . 'c' . print(6) . print(7) . 'b' . print(8) . 'a';的結(jié)果是什么呢猴凹?
結(jié)果是:8a7b16145c12131
有興趣的可以看看自己的推算出的結(jié)果是否是正確的夷狰。