PHP数组条件短语法

PHP数组条件短语法,php,arrays,Php,Arrays,这就是我所拥有的,我知道我可以重写我的条件语法,但我只是想看看我所拥有的还有什么可以做的 $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-&g

这就是我所拥有的,我知道我可以重写我的条件语法,但我只是想看看我所拥有的还有什么可以做的

$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] => 
)
这永远不会注册为“空”。据我所知,我需要在那里使用“else”语法,否则它会失败


除了
NULL
FALSE
之外,还有什么我可以使用的吗?或者以其他方式格式化它?我喜欢这种格式,因为我有大约600个这样的格式,它使它更容易阅读。有什么建议吗

您必须更改格式,因为在将另一个元素推送到数组中之前需要进行存在性检查。这应该起作用:

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;
}

另一种方法是使用
array\u filter()
不带回调来删除数组中的所有falsy元素:

<?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);

您应该使用
var\u dump
而不是
print\u r
,您会看到数组包含
false
。好吧,这看起来很清楚,我想我会将其更改为。谢谢