好久沒發文了,來灌水一下
我突然想到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″ />這樣