2017-02-17 81 views
-3

我想取消設置特定條件的值。如果我使用unset關鍵字它通過一個error.please任何人在這種情況下幫助我。如何在使用php的三元運算符中使用未設置

$reportHeader = array("name" => !empty($name) ? "Name" : "0", 
    "number" => !empty($number) ? "Number" : "0"); 

在這種情況下,我打印的姓名和號碼存在如果不存在,我回到0.but我不需要打印0。如果條件不滿足,我需要取消設置值。 我想是這樣的:

$reportHeader = array("name" => !empty($name) ? "Name" : unset(), 
     "number" => !empty($number) ? "Number" : unset(); 

但它通過錯誤

+0

什麼是你想取消設置?你還沒有告訴PHP你想要刪除的數組或索引。 – drmonkeyninja

+0

我想刪除數組中的索引 –

回答

2

不能使用unset()這樣,它需要一個變量要傳遞給它未設置(見PHP documentation而是填充您陣列,其中價值尚未確定,然後使用array_filter刪除索引null值你不想。

$reportHeader = array(
    "name" => !empty($name) ? "Name" : null, 
    "number" => !empty($number) ? "Number" : null 
); 
// Now remove the 'unset' values 
$reportHeader = array_filter($reportHeader); 
+0

是的它正在工作,但有時$ name可能會返回「」(空值)它返回我們要打印他們。但array_filter刪除「」也 –

+0

@RaghulRajendran你可能需要使用' isset()'而不是'!empty()'在這種情況下。 – drmonkeyninja

0

unset()需要一個或多個ARG uments。所以如果你啓用了錯誤報告功能,並且檢查了這個功能的文檔,你會自己看到這個。那麼問題是,你究竟想要解除什麼?

你需要返回一些值作爲你的數組的值,沒有unset()成爲值(像你目前正在嘗試)。如果你只打算要添加的元素,如果該值不爲空,你可以做

$reportHeader = array(); 
!empty($name) ? $reportHeader['name'] = "Name" : null; 
!empty($number) ? $reportHeader['number'] = "Number" : null; 

這增加值只在您的數組,如果他們是不是空的。

儘管標準if也很乾淨 - 僅僅因爲可以寫成三元運算符,並不意味着它應該。

if (!empty($name)) 
    $reportHeader['name'] = "Name"; 
0

您可以簡單地使用如下因素代碼

!empty($name) ? $reportHeader["name"] = "Name" : ""; 
!empty($number) ? $reportHeader["number"] = "Number" : "";