運(yùn)算符的優(yōu)先級(jí)

官方手冊(cè)

一、運(yùn)算符的優(yōu)先級(jí)

遞增/遞減>!>算數(shù)運(yùn)算符>大小比較>(不)相等比較>引用>位運(yùn)算符(^ > | > &)> 三目 > 賦值 > and > or

看一個(gè)例子

$a = false || true;

$b = flase or true;

結(jié)果$a = true,因?yàn)閨|的優(yōu)先級(jí)大于=所以先執(zhí)行(false || true)

$b=false,因?yàn)閛r的優(yōu)先級(jí)最小,先執(zhí)行$b=false

---------------------------------------------------------------------------------

$a = 0;

$b = 0;

if($a=3 > 0 || $b =3 > 0) {

? ? $a++;

? ? $b++;

? ? echo $a.'\n';

? ? echo $b.'\n';

}

結(jié)果$a=1,$b=1;因?yàn)?> 優(yōu)先級(jí)高于 || 高于 =,所以先執(zhí)行3>0所以$a=true,直接執(zhí)行if的代碼塊

二、流程控制

PHP除了for和foreach之外,還有一種循環(huán)的方式each() list()?

$array = [

? ? 'a' => 'apple',

? ? 'b' => 'banana',

? ? 'c' => 'carrot',

];

// each提取出當(dāng)前元素的key、value并向前移動(dòng)數(shù)組指針

while(list($key, $value) = each($array)){

? ? var_dump($key,$value);

? ? echo "
";

}

foreach與while-list-each的區(qū)別是,foreach遍歷前會(huì)reset數(shù)組指針,而while-list-each則不會(huì)。

三、作用域以及靜態(tài)變量

局部變量是無法使用全局變量的

// 全局變量

$outer = 'str';

function myfunc(){

? ? echo $outer; ->會(huì)報(bào)錯(cuò)

}

//如果要在局部使用全局變量需要用global關(guān)鍵字:

function myfunc(){

? ? global $outer; // $GLOBALS['outer'];也可以

? ? echo $outer; //str

}

靜態(tài)變量

1.靜態(tài)變量僅初始化一次,并且初始化的時(shí)候需要賦值

2.每次執(zhí)行函數(shù)都會(huì)保留該值

3.static是局部的變量,僅在函數(shù)內(nèi)部有效

4.在遞歸的時(shí)候可以用來記錄函數(shù)的調(diào)用次數(shù),從而作為終止遞歸的條件

$count = 5;

function echo_count(){

? ? static? $count;

? ? return $count++;

}

echo $count; //5

echo "
";

++$count;

echo echo_count(); // null 沒有給局部變量$count初始化

echo "
";

echo echo_count(); // 1? ? null + 1 =1

四、函數(shù)的返回值

函數(shù)的引用返回:

從函數(shù)返回一個(gè)引用,必須在函數(shù)聲明和指派返回值給一個(gè)變量都使用&

function &myFunc(){

? ? static $b = 10;

? ? return $b;

}

$a = myFunc();? -> $a=10;

$a = &myFunc(); -> $a和$b互為引用

$a = 100; -> $a修改同時(shí)也修改了$b

echo myFunc(); // 輸出100

外部文件的導(dǎo)入

require/include語句包含并運(yùn)行指定的文件,如果給出路徑名就會(huì)從路徑名中查找,否則從include_path(環(huán)境變量)中查找,如果include_path也沒有,則從調(diào)用腳本所在目錄和當(dāng)前工作目錄下查找。當(dāng)一個(gè)文件被包含的時(shí)候,其中所包含的代碼繼承了include所在行的變量范圍。

加載過程中如果沒有找到文件,require會(huì)發(fā)出一個(gè)致命錯(cuò)誤(E_COMPILE_ERROR)腳本終止;include(E_WARNING)產(chǎn)生一個(gè)警告,程序會(huì)繼續(xù)運(yùn)行

總結(jié):

$var1 = 5;

$var2 = 10;

function foo(&$my_var){

? ? global $var1;

? ? $var1 += 2;

? ? $var2 = 4;

? ? $my_var += 3;

? ? return $var2;

}

$my_var = 5;

echo foo($my_var). "\r\n"; //4 局部變量$var2

echo $my_var. "\r\n"; // 8? 引用傳遞改變值

echo $var1; // 7? ? // 全局變量 $var1在局部函數(shù)里面+2

echo $var2; // 10? // 全局變量$var2 并未修改過

$bar = 'foo';

$my_var = 10;

echo $bar($my_var). "\n"; // 4 還是輸出局部變量$var2

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容