这是我所拥有的,我知道我可以重写我的条件语法,但我只是想看看我能用其他东西做些什么。
$sleeping[] = ($a->day_bed == 1) ? 'Day Bed' : false;
$sleeping[] = ($a->fold_up_bed == 1) ? 'Fold Up Bed' : false;
$sleeping[] = ($a->murphy_bed == 1) ? 'Murphy Bed' : false;
$sleeping[] = ($a->trundle_bed == 1) ? 'Trundle Bed' : false;
我试图测试一个空数组,而不是一个空数组:
Array
(
[0] =>
[1] =>
[2] =>
[3] =>
)
这永远不会注册为"空"。据我所知,我需要"否则"语法在那里否则失败。
除了NULL
或FALSE
之外,我还能使用其他什么吗?或者任何其他格式化方式?我喜欢这种格式,因为我有大约600种,这使它更容易阅读。有什么建议?
答案 0 :(得分:2)
您需要更改格式,因为在将另一个元素推送到数组之前需要检查是否存在。这应该有效:
if ($a->day_bed == 1) $sleeping[] = 'Day Bed';
通过自动完成此任务,您可以节省大量工作,例如像
$bedTypes = array(
"day_bed" => "Day Bed",
"fold_up_bed" => "Fold up bed"
);
foreach ($bedTypes as $key=>$val) {
if ($a->{$key} == 1)
$sleeping[] = $val;
}
答案 1 :(得分:0)
另一种方法是使用array_filter()
而不使用回调来删除数组中的所有虚假元素:
<?php
$a = new stdClass();
$a->day_bed = false;
$a->fold_up_bed = false;
$a->murphy_bed = false;
$a->trundle_bed = false;
$sleeping[] = ($a->day_bed == 1) ? 'Day Bed' : false;
$sleeping[] = ($a->fold_up_bed == 1) ? 'Fold Up Bed' : false;
$sleeping[] = ($a->murphy_bed == 1) ? 'Murphy Bed' : false;
$sleeping[] = ($a->trundle_bed == 1) ? 'Trundle Bed' : false;
$emptySleeping = array_filter($sleeping);
if(empty($emptySleeping)) {
// here code if the array is empty.
}
var_dump($sleeping);
var_dump($emptySleeping);