2015-04-01 235 views
-6

如果狀態爲null,則設置的最短方式返回值'0'否則返回值。如果返回0,則檢查值否則返回值

$value['status'] = null; 

$STATUSES = array(
    0 => 'Pending', 
    1 => 'Accepted', 
    2 => 'Suspended', 
    3 => 'Rejected', 
    4 => 'Waiting list', 
    5 => 'Terminated', 
    9 => 'Application in Progress' 
); 

$status = $STATUSES[$value['status']]; 

echo $status; 

我可以使用empty()函數來檢查值是否爲'null',但我想知道是否有更聰明的方法。

我正在尋找一個像這樣的原生函數。

$status = $STATUSES[ valueToZiro($value['status'])]; 

function valueToZiro($val){ 
    return empty($val)?0:$val; 
} 
+0

你應該嘗試搜索谷歌,然後張貼在SO。 – 2015-04-01 08:35:10

+0

define()是什麼原因?它不起作用並觸發警告。 – axiac 2015-04-01 08:36:38

+0

'isset'也檢查它是否爲空的值 – iamawebgeek 2015-04-01 08:37:44

回答

1

如果確定爲獲得的更多信息整數爲您的$value['status']你可以把它轉換爲整數,它會更短:

// in case of null, casting will return 0 
$status = $STATUSES[(int)$value['status']]; 
+0

聰明的感謝哥們。我不知道爲什麼它不會出現在我的腦海裏:D – Fury 2015-04-01 08:46:01

1
if (array_key_exists($value['status'],$STATUSES) { 
     return $STATUSES[$value['status']]; 
} 
return 0; 
+0

'in_array'搜索數組值,在這種情況下需要使用'array_key_exists'函數。 – iamawebgeek 2015-04-01 08:46:47

+0

哦,你是對的 – Unex 2015-04-01 08:49:20

1
return is_null($status)?0:$status; 

使用空還將在空字符串$var = ""返回true,對空數組$var = array()0。使用is_null是檢查null值的最安全方法。

編輯:雖然上面這個答案回答您的主要問題,你的問題不屬於你的代碼......要解決你的代碼,我會做:

$value['status'] = null; 

$STATUSES = array(
    0 => 'Pending', 
    1 => 'Accepted', 
    2 => 'Suspended', 
    3 => 'Rejected', 
    4 => 'Waiting list', 
    5 => 'Terminated', 
    9 => 'Application in Progress' 
); 
define('STATUSES', $STATUSES); 
if(isset($STATUSES[$value['status']])){ 
    echo $STATUSES[$value['status']]; 
}else{ 
    return 0; 
} 
+0

是不是它的短期功能,如果條件? – Fury 2015-04-01 08:34:57

+0

是的,php的三元運算符。 http://davidwalsh.name/php-shorthand-if-else-ternary-operators – Salketer 2015-04-01 08:36:23

+0

@Fury糾正它被稱爲三元運算符。 – Daan 2015-04-01 08:36:31

1

PHP自動將一個「空」指數到一個空字符串 因此,添加一個值爲'0'的空字符串驢密鑰,可以解決您的問題,而無需檢查$value['status']是否爲空。

$STATUSES = array(
    '' => '0', 
    1 => 'Accepted', 
    // etc 
); 

這是否是一個可取的方法取決於你的情況,我想...

參見「Arrays with NULL keys」關於「null鍵」

相關問題