这可能是一个愚蠢的问题:
我正在执行以下操作以在我转换为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 :(得分:1)
我认为三元运营商不会帮助你解决这个问题。 但是你可以缩短你的代码,因为它有很多样板,你可以把所有东西都移到循环中。
$vars = array(
'category' => 'Category',
// ...
);
foreach ($vars as $name => $text) {
if (isset($_POST[$name])) {
$csv_fields[0][] = $text;
}
}
答案 1 :(得分:0)
您可以将三元与array_merge()
结合使用。
$csv_fields[0] = array_merge($csv_fields[0],
isset($_POST['category']) ?
array('Category') : array());
既不漂亮也不高效。更好地使用循环。