2016-12-30 57 views
1

我使用速記if語句來驗證如果一個值分配給一個變量,我的問題是我應該將語句分配給一個變量,因爲它是工作,如果我分配它或不。PHP |我應該分配速記如果聲明變量

聲明未分配給變量|工作

!empty($name) ? $name : $name=""; 

statement assigned to variable |也正在工作

$is_name = (!empty($name)) ? $name : $name="" ; 

這兩個聲明都在起作用,但哪一個是正確的或更好的使用。

+0

不要使用'empty()'檢查,如果設置了變量或不使用'isset()'。否則,這取決於你想要做什麼。如果你只是想設置變量,如果它之前沒有設置,你的第一個陳述是好的。如果你使用'isset()',那麼它也更有意義。 – KhorneHoly

+0

$ name變量可以是空的,所以我使用'empty()'我會用'isset()'嘗試它,但是仍然應該將整個語句分配給一個變量,並且可以說我要回顯$名稱,我應該寫'echo $ is_name'或'echo $ name' –

+0

@KhorneHoly'empty()'更好(用於文本/整數輸入);它檢查它是否都是空的/設置的。當使用複選框/收音機/選擇時,isset()是最好的。 –

回答

1

這可能會更好。你不需要額外的! operaiton和變量賦值。

$is_name = empty($name) ? "" : $name; 

$is_name = isset($name) ? $name : ""; //recomended this one 
+0

A ***很好的答案***總是會解釋做了什麼以及爲什麼這樣做,不僅是爲了OP,而且是爲了將來SO的訪問者。 –

2

在PHP 5.3+您可以使用此:

$is_name = $name ?: ""; 

注:在你的情況這可能不是最好的主意,因爲它會產生一個警告,如果$ name沒有設置。在這裏我仍然會推薦正常的方式

$is_name = isset($name) ? $name : ""; 

但問題是爲什麼要有一個未初始化的變量呢?

如果您只是有一種情況,即$ name可以是一個空字符串,並且您希望在此情況下給它一個默認值,那麼?:運算符就是您的合適值。

$is_name = $name ?: "default value"; 
+0

是的,$ name可能是一個空字符串 –

+0

@AhmadTahhan那麼你想分配一個空字符串,如果字符串是空的? –

+0

我會解釋一下,我有頁面A和B,頁面A可以通過表單將值發送到頁面B中的表單,所以我希望表單A中插入的值以表單B的形式顯示,這就是爲什麼我要檢查它有價值與否。 在同一時間頁面B可以獨立訪問和填寫表格中,而不需要頁面A. 對不起,如果使它變得複雜。我不知道它是否足夠清楚 –