整型與浮點型的運算:
$sum = 1 + 2.0; var_dump($sum); //float(3)
$dif = 5.0 - 1; var_dump($dif); //float(4)
$pro = 4.0 * 3; var_dump($pro); //float(12)
$dis = 9 / 3.0; var_dump($dis); //float(3)
$pow = 5 ** 3.0; var_dump($pow); //float(125)
$mod = 9.0 % 2; var_dump($mod); //int(1)
//運算過程中有浮點數的參與,除了取模,其他運算的結果都是浮點型
取模:
$mod1 = 9 % -2;
$mod2 = -9 % -2;
var_dump($mod1); //int(1)
var_dump($mod2); //int(-1)
//取模的結果和被除數的正負符號一樣
$var = '賦一個值';
$a += $b; //配合算術運算子使用
$a &= $b; //配合位運算子使用
$a .= $b; //配合字串拼接符使用
$a ??= $b; //配合NULL合併運算子使用
$a = 0b1011; //11
$b = 0b0010; //2
echo decbin($a & $b); //10(可看作0010) 位與:11得1,其他為0
echo decbin($a | $b); //1011 位或:00得0,其他為1
echo decbin($a ^ $b); //1001 位異或:10得1,其他為0
echo decbin(~$a); //1111111111111111111111111111111111111111111111111111111111110100(64位) 位取反:1得0,0得1
echo decbin($a << $b); //101100 位左移:將$a(二進位制)左移動$b(十進位制)個位置,用0補上
echo decbin($a >> $b); //10 位右移:將$a(二進位制)右移動$b(十進位制)個位置,即抹去移動的位數
一般比較:
$a = 1;
$b = 2;
var_dump($a > $b); //bool(false)
var_dump($a < $b); //bool(true)
$c = 3;
$d = '3';
var_dump($c == $d); //bool(true)
var_dump($c === $d); //bool(false) 全等,型別也要相同
特殊比較:
var_dump(1 == true); //bool(true)
var_dump(0 == false); //bool(true)
var_dump(false < true); //bool(true)
var_dump(NULL < false); //bool(false)
var_dump(NULL == false); //bool(true)
var_dump(NULL > false); //bool(false)
var_dump(NULL < true); //bool(true)
var_dump(NULL == true); //bool(false)
var_dump(NULL > true); //bool(false)
var_dump(NULL < 0); //bool(false)
var_dump(NULL == 0); //bool(true)
var_dump(NULL > 0); //bool(false)
//先轉化為相同型別再進行比較,可以把true看成1,NULL和false看成0
$a = 110;
$b = empty($a) ? 120 : $a;
echo $b; //110
$temp1 = true ? 'true' : 'false';
$temp2 = false ? 'true' : 'false';
echo $temp1; //true
echo $temp2; //false
$a = 110;
$b = $a ?? 120;
echo $b; //110
$temp1 = NULL ?? 'abc';
$temp2 = '' ?? 'abc';
echo $temp1; //abc
var_dump($temp2); //string(0) "" 只有為NULL才會選擇第二個表示式
一般情況:
$a = 2;
echo ++$a; //3 先遞增後執行
$a = 2;
echo $a++; //2 先執行後遞增
echo $a; //3
$a = 2;
echo --$a; //1 先遞減後執行
$a = 2;
echo $a--; //2 先執行後遞減
echo $a; //1
特殊情況;
$a = true;
var_dump(++$a); //bool(true)
$a = true;
$a++;
var_dump($a); //bool(true)
$a = true;
var_dump(--$a); //bool(true)
$a = true;
$a--;
var_dump($a); //bool(true)
$b = false;
var_dump(++$b); //bool(false)
$b = false;
$b++;
var_dump($b); //bool(false)
$b = false;
var_dump(--$b); //bool(false)
$b = false;
$b--;
var_dump($b--); //bool(false)
$c = NULL;
var_dump(++$c); //int(1)
$c = NULL;
$c++;
var_dump($c); //int(1)
$c = NULL;
var_dump(--$c); //NULL
$c = NULL;
$c--;
var_dump($c); //NULL
//邏輯與
var_dump(true && true); //bool(true) 雙方為true才為true
var_dump(true && false); //bool(false)
var_dump(false && true); //bool(false)
var_dump(false && false); //bool(false)
//邏輯或
var_dump(true || true); //bool(true)
var_dump(true || false); //bool(true)
var_dump(false || true); //bool(true)
var_dump(false || false); //bool(false) 雙方為false才為false
//邏輯異或
var_dump(true xor true); //bool(false)
var_dump(true xor false); //bool(true) 雙方分別為true和false才為true
var_dump(false xor true); //bool(true)
var_dump(false xor false); //bool(false)
//邏輯非
var_dump(!true); //bool(false)
var_dump(!false); //bool(true)
$a = 'hello';
$b = 'world';
echo $a.$b; //helloworld
聯合符+:
$a = array(
'a' => 'apple',
'b' => 'banana',
'c' => 'cat'
);
$b = array(
'd' => 'dog',
'b' => 'banana2',
'c' => 'cat2'
);
$res1 = $a + $b;
print_r($res1); //Array ( [a] => apple [b] => banana [c] => cat [d] => dog )
$res2 = $b + $a;
print_r($res2); //Array ( [d] => dog [b] => banana2 [c] => cat2 [a] => apple )
//如果key相同,那麼+號左邊陣列的值覆蓋+號右邊陣列的值
比較符==、===:
$a = array(
'a' => '1', 'b' => 2
);
$b = array(
'a' => '1', 'b' => '2'
);
$c = array(
'b' => 2, 'a' => '1'
);
$d = array(
'a' => '1', 'b' => 2
);
var_dump($a == $b); //bool(true)
var_dump($a == $c); //bool(true)
var_dump($a == $d); //bool(true)
var_dump($a === $b); //bool(false)
var_dump($a === $c); //bool(false)
var_dump($a === $d); //bool(true) //全等的條件是鍵名鍵值順序型別一樣
大概順序:求冪 > 遞增遞減 > 邏輯非 > 算術 > 比較 > 位 > 邏輯 > 賦值
具體可參考手冊:www.php.net/manual/zh/language.ope...
本作品採用《CC 協議》,轉載必須註明作者和本文連結