php

[php]ISSET() == ” empty() 三種判斷POST是否有資料的差異

好久沒發文了,來灌水一下

我突然想到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″ />這樣

980826-官方使用手冊的empty(),is_null(),isset特殊判斷結果列表

Be the First to comment.

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

(若看不到驗證碼,請重新整理網頁。)