php編程中echo用逗號(hào)和用點(diǎn)號(hào)連接的區(qū)別,echo逗號(hào)_PHP教程
Jul 12, 2016 am 08:55 AMphp編程中echo用逗號(hào)和用點(diǎn)號(hào)連接的區(qū)別,echo逗號(hào)
里面提到了echo 字符串用,比用.連接要好。原因先不說(shuō),先來(lái)看以下兩句
<?php // 逗號(hào)比.更節(jié)省時(shí)間? echo '1+5=' . 1+5; echo '1+5=' . 5+1;
結(jié)果是什么?
1+5=6? 1+5=6? —————— 6? 2? —————— 6.6? 6.6? ——————
我只能說(shuō)echo '5+1=' . 1+5;的結(jié)果是10,所以結(jié)果是6和2.
為什么會(huì)這樣.難道在PHP中加法是沒(méi)有交換律的?當(dāng)然不是..
我們先不去想為什么.如果我把上面的點(diǎn)號(hào)換成逗號(hào)試下.
echo '1+5=' , 5+1; //輸出 1+5=6 echo '1+5=' , 1+5; //輸出 1+5=6
可以看出.只有使用逗號(hào)我們才可以得到意料中的結(jié)果.
那為什么點(diǎn)號(hào)就不行呢?逗號(hào)為什么就行呢?
echo ('1+5' . 5)+1; //輸出2
我們給前面的加個(gè)括號(hào)后.得到的結(jié)果是一樣的.
證明PHP是先連接字符串再進(jìn)行加法計(jì)算了.按照從左向右的方向進(jìn)行的.
那么好.既然是先連接的字符串.那么就應(yīng)該是"1+55"了.然后再用這個(gè)字符串加上1.那為什么就會(huì)輸出2呢?
這個(gè)跟PHP中字符串變成數(shù)字的機(jī)制是相關(guān)的.我們來(lái)看下面的例子
echo (int)'abc1'; //輸出0 echo (int)'1abc'; //輸出1 echo (int)'2abc'; //輸出2 echo (int)'22abc'; //輸出22
從上面的例子我們可以看出.如果將一個(gè)字符串強(qiáng)制轉(zhuǎn)換成一個(gè)數(shù)字.PHP會(huì)去搜索這個(gè)字符串的開(kāi)頭.如果開(kāi)頭是數(shù)字就轉(zhuǎn)換.
如果不是就直接返回0.
回到剛才的1+55.既然這個(gè)字符串是1+55.所以強(qiáng)制類(lèi)型轉(zhuǎn)換后就應(yīng)該是1了.在此基礎(chǔ)上加1.當(dāng)然是2了.
為了證明我們的猜想.我們來(lái)驗(yàn)證一下.
echo '5+1=' . 1+5; //輸出10 echo '5+1=' . 5+1; //輸出6 echo '1+5=' . 1+5; //輸出6 echo '1+5=' . 5+1; //輸出2
結(jié)果證明.我們的設(shè)想是正確的.
那么為什么使用逗號(hào)就沒(méi)有上面的問(wèn)題了呢?
手冊(cè)上說(shuō)了.用逗號(hào)是multiple parameters .
也就是說(shuō)是多參數(shù).換句話說(shuō).
逗號(hào)分隔開(kāi)的就相當(dāng)于是N個(gè)參數(shù).也就是說(shuō)把echo當(dāng)個(gè)函數(shù)用.
這樣的話.echo會(huì)對(duì)每個(gè)參數(shù)先進(jìn)行計(jì)算.最后再進(jìn)行連接后輸出.所以我們用逗號(hào)就不存在上面的問(wèn)題了:)
php echo manual
<?php // Strings can either be passed individually as multiple arguments or // concatenated together and passed as a single argument echo 'This ', 'string ', 'was ', 'made ', 'with multiple parameters.', chr(10); echo 'This ' . 'string ' . 'was ' . 'made ' . 'with concatenation.' . "\n";
至于為啥快,可以簡(jiǎn)單理解,用.是先拼接在echo,雖然逗號(hào)個(gè)數(shù)代表echo的調(diào)用次數(shù)(可以這么理解暫時(shí))。
但是拼接的速度要小于echo的速度。
如果深入理解,VLD如下圖。是@tywei大神的圖
上面比下面多了個(gè)CONCAT,下面比上面多了個(gè)echo。
您可能感興趣的文章:
- php echo 輸出字符串函數(shù)詳解
- PHP學(xué)習(xí)之輸出字符串(echo,print,printf,print_r和var_dump)
- php輸出echo、print、print_r、printf、sprintf、var_dump的區(qū)別比較
- PHP echo,print,printf,sprintf函數(shù)之間的區(qū)別與用法詳解
- php function用法如何遞歸及return和echo區(qū)別
- PHP中echo和print的區(qū)別
- PHP中echo,print_r與var_dump區(qū)別分析
- php中print(),print_r(),echo()的區(qū)別詳解

? AI ??

Undress AI Tool
??? ???? ??

Undresser.AI Undress
???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover
???? ?? ???? ??? AI ?????.

Clothoff.io
AI ? ???

Video Face Swap
??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

?? ??

??? ??

???++7.3.1
???? ?? ?? ?? ???

SublimeText3 ??? ??
??? ??, ???? ?? ????.

???? 13.0.1 ???
??? PHP ?? ?? ??

???? CS6
??? ? ?? ??

SublimeText3 Mac ??
? ??? ?? ?? ?????(SublimeText3)

??? ??











PHP?? ?? ?? ID? ?? ??? Session_id () ??? ???? ???? Session_Start ()? ???? ????? ??????. 1. ??? ????? ?? _start ()? ?????. 2. Session_id ()? ???? ?? ID? ?? ABC123DEF456GHI789? ??? ???? ?????. 3. ??? ?? ??? Session_Start ()? ??????, ???? ???? ?????? ?? ??? ?????? ??? ??????. 4. ?? ID? ??, ?? ?? ? ?? ?? ??? ??? ? ??? ?????? ???????. ??? ???? ????? ID? ????? ?? ? ??? ??????.

PHP ????? ?? ???? ????? Syntax substr (String $ String, int $ start,? int $ length = null) ? substr () ??? ??? ? ??? ??? ???? ??? ??? ?????. ???? ?? ?? ??? ??? ?? ? ?? MB_SUBSTR () ??? ???? ?? ??? ??????. ?? ???? ?? ???? ?? ????? ?? exploit () ?? strtr ()? ???? ?? ?? ??? ?? ??? ?? ??? ?? ??? ? ????.

UnitTestingInphPinvolvesVeverifying individualCodeUnitsInitsIntsormeStodStocatchBugSearlyLylyLearLiAberFactoring.1) setupphPunitviacomposer, createEatestDirectory, and ConfigeAuteAutoloadandPhpunit.xml.2) writeTestCases-oct-oct-asserterfat

PHP?? ?? ???? ??? exploit () ??? ???? ???? ??? ???? ????. ? ??? ??? ?? ??? ?? ???? ?? ???? ??? ??? ?????. ??? Exploit (???, ???, ??)??, ??? ???? ????? ???? ?? ?????, ??? ????? ?? ?? ?????? ??? ?? ?????. ?? ?? $ str = "Apple, Banana, Orange"; $ arr = Explode ( ",", $ str); ??? [ "Apple", "Bana???

JavaScript ??? ??? ?? ?? ? ?? ???? ????. ?? ???? ???, ??, ??, ?, ???? ?? ? ??? ?????. ?? ????? ?? ?? ? ? ??? ????? ?? ??? ??? ????. ??, ?? ? ??? ?? ?? ??? ??? ??? ???? ??? ??? ???? ??? ?? ??? ????. ?? ? ????? ??? ???? ? ??? ? ??? TypeofNull? ??? ?????? ??? ? ????. ? ? ?? ??? ???? ?????? ????? ???? ??? ???? ? ??? ? ? ????.

STD :: Chrono? ?? ?? ??, ?? ?? ??, ?? ?? ? ?? ?? ? ?? ?? ??? ???? C?? ???? ??? ?????. 1. std :: chrono :: system_clock :: now ()? ???? ?? ??? ?? ? ??? ?? ??? ???? ?? ? ? ??? ??? ??? ???? ?? ?? ? ????. 2. std :: Chrono :: steady_clock? ???? ?? ??? ???? ?? ??? ???? duration_cast? ?? ?? ?, ? ? ?? ??? ??????. 3. ?? (time_point) ? ?? (??)? ?? ??? ? ? ??? ?? ??? ? ?? epoch (epoch)???? ???????.

PHP?? ?? ??? ?? ???? ????? ?? ??? ???? ???? ??? $ _session ? ??? ???? ????. 1. ? ???? ?? ??? ???? ?? Session_Start ()? ???? ???? ??? ???????. 2. $ _session [ 'username'] = 'johndoe'? ?? ?? ??? ?????. 3. ?? ????? session_start ()? ?? ? ? ??? ? ??? ?? ??? ???????. 4. Session_Start ()? ? ????? ???? ??? ????, ???? ?? ???? ??, ??? ?? ???? ??? ?? ? ? ??? ??????. 5. SES? ??????

toaccessenvironmentvariablesinphp, usegetenv () ?? $ _envsuperglobal.1.getenv ( 'var_name') retrievespescificvariable.2. $ _ en v [ 'var_name'] accessesvariablesifvariables_orderinphp.iniincludes "e".setvariablesviacliwithvar = valuephpscript.php, inapach
