1. 程式人生 > >PHP中isset(變數)和直接判斷變數的區別

PHP中isset(變數)和直接判斷變數的區別

在變數為空字串和布林值false以及數值0時,isset全部返回true,直接判斷全部返回false:

$empty='';
echo (isset($empty)?'1':0);//1
echo '<br/>';
echo ($empty?'1':0);//0
$empty=false;
echo (isset($empty)?'1':0);//1
echo '<br/>';
echo ($empty?'1':0);//0
$empty=0;
echo (isset($empty)?'1':0);//1
echo '<br/>';
echo ($empty?'1':0);//0

只有在變數為null時,它們才是沒有區別的:

$empty=null;
echo (isset($empty)?'1':0);//0
echo '<br/>';
echo ($empty?'1':0);//0

isset可以判斷一個變數是否已經定義,而直接判斷一個未定義的變數是會報錯的:

echo (isset($empty)?'1':0);//0
echo '<br/>';
echo ($empty?'1':0);//報錯

另外isset在判斷陣列中有無一個變數也很好用:

$arr=array('1'=>1,'3'=>3);
$temp=null;
//PS:php中的陣列不同於其它語言的map,php陣列中如果沒有key而你去取值會引發錯誤而不是返回null,所以要有對應的判斷,先判斷再取值
if (isset($arr['2'])) {//效果等同於array_key_exists('2', $arr),但相對程式碼短一點 $temp=$arr['2']; } echo $temp;

相關推薦

PHPisset(變數)直接判斷變數區別

在變數為空字串和布林值false以及數值0時,isset全部返回true,直接判斷全部返回false: $empty=''; echo (isset($empty)?'1':0);//1 echo '<br/>'; echo ($empty?'

PHPnew static() new self() 的區別

pub 堆內存 func sel urn ret 通過 ati php self 指的是self所在的類 new static 實例化的是當前使用的類,有點像$this ,從堆內存中提取出來。 還是通過實例說明一下: class A { public static f

PHPnew self()new static()的區別--延遲靜態載入

1.new static()是在PHP5.3版本中引入的新特性。 2.無論是new static()還是new self(),都是new了一個新的物件。 3.這兩個方法new出來的物件有什麼區別呢,說白了就是new出來的到底是同一個類例項還是不同的類例項呢? 為了探究上面的問題,我們

php全等(===)相等(==)的用法區別

我們來看一下下面一個程式: $str = "0d52"; if (0==$str) { echo "真"; } else { echo "假"; } 這個程式執行的結果出人意料, “0d52”居然 被PHP認為和0相等了。 為什麼會出現這樣的

PHP單引號雙引號的區別PHP常用的轉義字元

1. PHP中單引號和雙引號的區別 雙引號可以解析變數,單引號不能解析變數; 雙引號和單引號可以互相巢狀; 雙引號當中包含單引號,單引號當中又包含變數時,變數會被解析,單引號會被原樣輸出; 雙引號可

談談php抽象類接口的區別

inter 我不 bsp protected 重新 rac 多人 clas 運行 php中抽象類和接口的區別 1) 概念 面向對象的三大概念:封裝,繼承,多態 把屬性和方法封裝起來就是類。 一個類的屬性和方法被

PHP全域性變數超全域性變數

自定義全域性變數的作用域為當前的指令碼檔案的任意位置(函式或者方法啊之類的),但是要想用它們必須先執行一下  global $variable語句 (variable為要使用的全域性變數) ,或者是使用$_GLOBAL['變數名字']來呼叫。 超全域性變數作用於也是為當前的

javapath環境變數classpath環境變數的作用以及配置

path環境變數    原因:在jdk的bin目錄下有編譯工具(javac.exe)和執行工具(java.exe),如果不配置path環境變數只有在bin目錄下才能編譯執行java程式。     作用:通過配置path環境變數,將javac指令所在

在redis使用Lua指令碼如何判斷變數是否為空

--在lua中,除了nil和false,其他的值都為真,包括0,可以通過nil為false這一點來判斷是否為空 local temp = redis.call('get',key) if temp then    print('temp為非空')  else   

C#執行緒靜態變數普通靜態變數區別

當欄位被ThreadStatic特性修飾後,它的值在每個執行緒中都是不同的,即每個執行緒對static欄位都會重新分配記憶體空間,就當然於一次new操作,這樣一來,由於static欄位所產生的問題也就沒有了,這種static資料上下文是可以被接受的

php語言中global $_GLOBAL全域性變數區別

闡述:使用PHP語言有一段時間了,今天看見某段程式碼中的global 變數。突然腦海中想到global 和 $GLOBALS區別是什麼呢?1), global 變數名,示例程式碼如下:輸出結果為:2), $GLOBALS 變數名,示例程式碼:輸出結果為:總結:眾所周知區域性變

關於C語言返回區域性變數區域性指標變數

char *test1(void) { char b[10] = "abcde"; return b; } char *test1_ver2(void) { static char b[10] = "abcde"; return b; } char *test2(voi

Java靜態變數非靜態變數的初始化順序

  先看下面的程式: package c05.net; class Bowl {Bowl(int marker) {System.out.println("Bowl(" + marker + ")");} void f1() {System.out.println("Ok")

C++類成員變數成員指標變數小結

指標的確有點難理解,不過它之所以存在並大範圍使用,這樣做是有一定道理的。 一、C++中的類和結構使用指標定義成員作用 1、多型的要求。 如果要使用同一介面,多型設計,那麼就一定要使用基類指標。只有指標才能在實力化後動態的判斷使用哪個方法。2、程式碼複用。有一些程式要設計

02 . Shell變數邏輯判斷及迴圈使用

#### Shell變數 ##### 系統變數 > 在命令列提示符直接執行 env、set 檢視系統或環境變數。env 顯示使用者環境變數,set 顯示 Shell預先定義好的變數以及使用者變數。可以通過 export 匯出成使用者變數。 `一些寫Shell指令碼時常用的系統變數` ```python

javaString new直接賦值的區別

字符串相同 main 基礎 還需 賦值 請問 常量 int 表達 Java中String new和直接賦值的區別 對於字符串:其對象的引用都是存儲在棧中的,如果是編譯期已經創建好(直接用雙引號定義的)的就存儲在常量池中,如果是運行期(new出來的)才能確定的

PHP的__call__callStatic方法(未看完)

def 不可見 重載方法 varchar baidu value dso argument dom 如何防止調用不存在的方法而出錯,使用__call魔術重載方法. __call方法原型如下: mixed __call(string $name,array $argume

2018/04/21 PHP 的SessionCookie知識總結

結束 方式 全局變量 過期 ESS 簡單 star 如何 lencod 在之後的工作和學習中,更是發現了自己對於基礎知識的不紮實,於是又返回頭來學習,確實很多東西是之前沒註意或是沒掌握的。 著重講一下這幾個問題 -- 什麽是 Cookie ? 簡單來說:   因為 HTTP

php靜態方法靜態屬性的介紹

靜態屬性 size col 實例 生效 訪問類 都是 靜態 self 靜態分為兩個部分:靜態屬性和靜態方法 靜態的東西都是給類用的(包括類常量),非靜態的都是給對象用的 靜態屬性 在定義屬性的時候,使用關鍵字static修飾的屬性稱之為靜態屬性。 靜態方法 使用sta

php學習筆記:第四節--php的運算子流程控制

PHP的運算子、流程控制和其他語言的運算子一樣,沒什麼特別的,這裡不再累贅。     特別的運算子: .=             $a.=$b