好久沒發文了,來灌水一下
我突然想到php判斷變數的方式有好幾種 但是總是有些差異吧
例如isset 跟==” ” 跟empty 到底差在哪裡
不囉嗦,我們先寫個簡單的code就知道了
<?php echo $_POST['xxx']; if (isset($_POST["xxx"])){ echo "1.用ISSET判斷變數,變數存在<br>"; } else { echo "1.用ISSET判斷變數,變數不存在<br>"; } if ($_POST["xxx"] == "") { echo "2.用== ''判斷變數,變數是空的<br>"; } else { echo "2.用== ''判斷變數,變數不是空的<br>" ; } if ($_POST["xxx"] != "") { echo "3.用== ''判斷變數,變數不是空的<br>"; } else{echo "3.用== ''判斷變數,變數是空的<br>"; } if (empty($_POST["xxx"])) { echo "4.用empty判斷變數,變數是空的<br>"; } else { echo "4.用empty判斷變數,變數不是空的<br>"; } ?> <form action="" method="POST"> post <input type="text" name="xxx"><br> <input type="submit" value="Submit"> </form>
上面就是一個簡單的post欄位 然後我們都不要輸入資料直接按下送出
這時候結果出來了
1.用ISSET判斷變數,變數存在
2.用== ”判斷變數,變數是空的
3.用== ”判斷變數,變數是空的
4.用empty判斷變數,變數是空的
發現亮點了嗎? 就算我沒輸入欄位 他是空的直接送出
isset變數卻是存在的 也就是說 我就算沒打東西$_POST[“xxx”] 也會存在
但是他的資料會是空的 所以empty會是true 當然==”” 也會是true
empty是用來判斷是否為空值
isset就是拿來確定變數是否有被設置
所以有些人在判斷欄位時會寫
if(isset($_POST[“xxx”]){
//執行sql
}
這樣是不行的 因為他一定會存在有寫跟沒寫一樣,唯一不存在的情況就是你前台的
<input type=”text” name=”xxx” />打錯了
可能打成
<input type=”text” name=”000″ />這樣