任何有值的,都可以看成表達式。
## 運算符
### 算術運算符
`+-*/%`
取模常用來換行
~~~
if($i+1)/2==0{
echo "<br/>";
}
~~~
遞增遞減
~~~
++$a;
$a++;
--$a;
$a--;
~~~
### 字符串運算
* 字符串是對ascii碼遞增,只支持a-z,A-Z之間循環
* 沒有字符串遞減
* 字符串和數字相加,嘗試把字符串轉成數字,如果不能轉數字變為0
* 字符串和數字可以進行所有的算術運算,轉換規則相同
* 字符串數字混合,從第一個數字從前往后取,轉不了就舍棄`123f=>123`,`f123=>0`
~~~
$str='a';
//找出a的ascii碼,加1,然后返回對應的字符
$str++; //b
abc---abd
abz---aca
~~~
~~~
'a'+3=3;
'2'+3=5
‘123f’+3=123+3=126
~~~
### 賦值運算
~~~
//最常見的6種,其他的不研究
=
+=
-+
*=
/=
%=
~~~
### 比較運算符
~~~
==
===
!=
!==
>
<
>=
<=
~~~
~~~
$a=8.4;
$b=2.3;
$min_val=0.000000001;
if(round($a*100000)-round($b*100000)>$min_val){
echo '$a'=='$b';
}else if($a>$b){
echo '$a'>'$b';
}else{
echo '$a'<'$b';
}
~~~
### 邏輯運算符
運算優先級:&&優先級>and, ||優先級>or, =優先級>or,`&&` 大于 `=` 大于` and`
`$a=true|| false //先運算$a=true` 使用括號括起
~~~
$a and $b;
$a or $b;
$a xor $b;//有且只有一個為真
!$a;
$a && $b;都為真
$a || $b;只要有一個為真
~~~
**細節**
* 邏輯與短路現象
~~~
//如果第一個為假,第二個不執行運算
$a=0;$b=3;
if($a && $b++){
echo "abcd";
}
var_dump($a,$b);//0,3
~~~
* 邏輯或短路
~~~
//第一個為true,第二個不再執行
$a=1;
$b=3;
if($a || $b++){
echo "abcd";
}
var_dump($a,$b); //1,3
~~~
~~~
//$a先比較為false,后運算++
$a=10;$b=3;
if($a++>10 && $b++){
echo "abcd";
}
var_dump($a,$b); //11,3
~~~
三元運算符
~~~
$res=($a==1)?100:'HELLO';
~~~
### 字符串運算符 .
* 拼接功能
* .=運算中間不能有空格
~~~
$a.$b
~~~
運算:
~~~
'abc'.1234 //abc1234----字符串運算
'abc'+1234 //1234 ----算術運算
~~~
### 類型運算符 instanceof
變量是否屬于某個類型
~~~
class Dog{}
$dog1=Dog();
if($dog1 instanceof Dog){
//判斷這個實例是不是Dog對象的
}
~~~
### 執行運算符``
* 跨平臺性差,不同平臺指令不同
* 等同于函數shell_exec()
* 將反引號里面的內容作為外殼來執行,經常用來運行系統指令
~~~
echo '<meta charset=gbk>';
echo '<pre>';
echo `ipconfig -all`;
echo `netstat -anb`;
~~~
### 錯誤控制運算符@
* 將@放在表達式之前,可以忽略這個表達式的錯誤。
* 致命錯誤顯示error
* 一般可以和die配合使用,一般錯誤忽略,致命錯誤顯示die的內容,并終止
~~~
$con=@mysql_connect('localhost','root','root') or die(mysql_error());
if($con){
echo '連接成功';
} else{
echo "連接失敗";
}
~~~
### 運算符優先級
