2014-01-13 10 views
0

這可能是一個愚蠢的問題設置數組值:設置還是不通過三元操作

我做以下設置標題中,我轉換成CSV下載的數組。 CSV部分與這個問題無關,因爲它工作得很好。

陣頭:

$csv_fields = array(); 
$csv_fields[0] = array(); 
$csv_fields[0][] = 'Category'; 
$csv_fields[0][] = 'Question'; 
$csv_fields[0][] = 'Case'; 
$csv_fields[0][] = 'Partner'; 
// ... etc 

現在我想設置基於複選框是Posted給腳本的頭。我要使用大量if, else語句,像這樣:

if ($_POST['category']) { 

    $csv_fields[0][] = 'Category'; 

elseif ($_POST['question']) { 

    $csv_fields[0][] = 'Question'; 

} 
// .... etc 

但認爲有可能使用三元運算符一個更好的辦法。我嘗試了以下方法,但是當然如果沒有設置$_POST,它仍會向數組添加一個空值,所以我會在標題中留下空白。

$csv_fields[0][] = isset($_POST['category']) ? 'Category' : NULL; 
// ... etc 

我最終是這樣的:

[0] => 
[1] => Question 
[2] => 
[3] => Partner 
// ... etc 

所以我的問題是,我該如何使用三元運算符來只跳過,而不是設置數組值,如果$_POST變量沒有設置?

或者還有更好的方法嗎?

感謝

+0

哪裏是合作伙伴來自? –

+0

這只是我設置的另一個標題。你可以看到我在上面的第一塊代碼中隱式地設置它。這只是一個例子。我不想展示我的整個劇本,因爲我非常清楚我想從片段中做些什麼。你應該能夠推斷出它... – superphonic

回答

1

我不認爲一個tenary運營商可以幫你這個.. 但是你可以縮短你的代碼,因爲這是一個很大的樣板,你可以移動一切的循環。

$vars = array(
    'category' => 'Category', 
    // ... 
); 

foreach ($vars as $name => $text) { 
    if (isset($_POST[$name])) { 
     $csv_fields[0][] = $text; 
    } 
} 
+0

這似乎是一個勝利者。不能相信我自己沒有達到這個解決方案。 – superphonic

0

您可以結合使用三元組與array_merge()。它們既不漂亮也不高效。更好地使用循環。