作者evil2004 (忘卻深淵)
看板PHP
標題Re: [請益] 關於if流程控制~~
時間Sat Aug 22 15:51:20 2009
※ 引述《tas72732002 (蔥頭)》之銘言:
: 請問一下下列判斷句的意思
: if($a=$_GET["test"])
: echo "敘述一";
: else
: echo "敘述二";
: 請問這句話的意思是判斷 $_GET["test"]是否有給值給$a嗎??
: 因為之前看的if條件都很清楚 如if($a>5) if($b ==5) 之類
: 但上述的判斷句實在不太懂他的意思~~ 麻煩各位解惑 感謝!!!!!!
首先先向原PO致歉...
小弟的無知傳達了錯誤觀念!!
原PO的猜測沒有錯~~~
必須在意$_GET["test"]有沒有值 才能決定if裡回傳是true還是false
簡單的問題總是容易讓人心癢癢的...
在求知慾的驅使下...小弟寫了幾個類似的code測試結果如下!
1.不設定b值直接傳!
<?
$a = "aaa";
if($a = $b)
echo $a;
else
echo "error";
?>
Result: error
2.設定b值傳
<?
$a = "aaa";
$b = 9;
if($a = $b)
echo $a;
else
echo "error";
?>
Result: 9
3.判斷b值的isset結果
<?
$a = "aaa";
if(isset($b))
echo $a;
else
echo "error";
?>
Result: error
4.判斷b值若為空值的isset結果
<?
$a = "aaa";
$b = "";
if(isset($b))
echo $a;
else
echo "error";
?>
Result: aaa
5.若b為空值,傳給a的話回傳結果
<?
$a = "aaa";
$b = "";
if($a = $b)
echo $a;
else
echo "error";
?>
Result: error
所以結論 其實就跟原PO想得一模一樣...
只要b沒有值傳給a...$a=$b這個敘述式就會回傳false
無論isset($b)是否回傳true...
應該看得是$b裡面有沒有值正確的被儲存至$a~~~~
以上 我不確定我的想法對不對...
如果有觀念上的盲點還請各位大大予以指正!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.217.99.103
→ mlwmlw :我看不太懂你說的意思…但感覺不太對 08/22 16:04
→ mlwmlw :空字串==FALSE是TRUE喔 08/22 16:10
→ evil2004 :就像上一篇文大大推文講的...if($a=$b)等同於if($b) 08/22 16:11
→ evil2004 :所以$b為空字串...if($b)就會跳到error~~~ 08/22 16:12
→ evil2004 :大概就是這個意思~~~ 08/22 16:12
推 arrack :個人是很不喜歡 寫if($b) 不夠直觀 08/22 16:36
推 yuyuan0507 :糾正我的觀念了!if($a=$_GET["test"])的get不只空值 08/23 01:11
→ yuyuan0507 :會跳離開判斷,get值=0 也會. 08/23 01:12