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
。好吧,这看起来很清楚,我想我会将其更改为。谢谢