我想避免多个if
,我的问题是:
是否有函数或方法向数组添加多个数组($ a,$ b),但仅当数组($ a,$ b)不为空时?
假设:
$a = ['foo' => 'bar'];
$b = [];
我的代码:
$c = [];
if (count($a))
{
$c['a'] = $a;
}
if (count($b))
{
$c['b'] = $b;
}
是的,我需要具有特定名称的字符串键。
答案 0 :(得分:5)
如果您的所有元素都是数组,那么您可以使用array_filter
轻松地删除空元素。例如,利用您的密钥等于变量名称的事实,您可以简单地执行
$c = array_filter(compact('a', 'b'));
答案 1 :(得分:3)
嗯,怎么样
$c = array_filter(compact('a', 'b'));
开玩笑吧。我不是真的推荐这个。 "智能(驴)"代码很糟糕,尤其是在php中。要冗长,易读。
(看起来OP没有开玩笑。太糟糕了......)
答案 2 :(得分:1)
您可以执行以下操作:
$c = array();
function addToC(){
foreach(func_get_args() as $arg){
if(is_array($arg) && !empty($arg){
$c[] = $arg;
}
}
}
答案 3 :(得分:0)
这是非常hacky,只是掩盖了糟糕的设计,但有变量变量:
$to_do = array('a', 'b');
foreach ($to_do as $key) {
if (count($$key)) {
$c[$key] = $$key;
}
}
注意加倍$
。 e.g。
php > echo $bar;
PHP Notice: Undefined variable: bar in php shell code on line 1
php > $foo = 'bar';
php > $$foo = 'baz';
php > echo $bar;
baz