Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何仅向数组中添加非空数组?_Php_Arrays - Fatal编程技术网

Php 如何仅向数组中添加非空数组?

Php 如何仅向数组中添加非空数组?,php,arrays,Php,Arrays,我想避免几个ifs,我的问题是: 是否有一种函数或方法可以将多个数组($a,$b)添加到一个数组中,但前提是数组($a,$b)不是空的 鉴于: $a = ['foo' => 'bar']; $b = []; 我的代码: $c = []; if (count($a)) { $c['a'] = $a; } if (count($b)) { $c['b'] = $b; } 是的,我需要具有特定名称的字符串键。好的,怎么样 $c = array_filter(compact('a'

我想避免几个
if
s,我的问题是:

是否有一种函数或方法可以将多个数组($a,$b)添加到一个数组中,但前提是数组($a,$b)不是空的

鉴于:

$a = ['foo' => 'bar'];
$b = [];
我的代码:

$c = [];

if (count($a))
{
  $c['a'] = $a;
}

if (count($b))
{
  $c['b'] = $b;
}
是的,我需要具有特定名称的字符串键。

好的,怎么样

$c = array_filter(compact('a', 'b'));
只是开玩笑。我真的不推荐这个。“智能(ass)”代码很糟糕,尤其是在php中。要冗长,要可读

(看起来OP没有听到这个笑话。太糟糕了…

好吧,怎么样

$c = array_filter(compact('a', 'b'));
只是开玩笑。我真的不推荐这个。“智能(ass)”代码很糟糕,尤其是在php中。要冗长,要可读


(看起来OP没有听到这个笑话。太糟糕了…

如果您的所有元素都是数组,那么您就可以轻松地用数组将空元素抛出。例如,利用键等于变量名这一事实,您可以简单地执行以下操作

$c = array_filter(compact('a', 'b'));

如果您的所有元素都是数组,那么您可以很容易地用数组抛出空元素。例如,利用键等于变量名这一事实,您可以简单地执行以下操作

$c = array_filter(compact('a', 'b'));

它非常粗糙,只是为了掩盖糟糕的设计,但有很多可变因素:

$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

它非常粗糙,只是为了掩盖糟糕的设计,但有很多可变因素:

$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

您可以执行以下操作:

$c = array();

function addToC(){
   foreach(func_get_args() as $arg){
    if(is_array($arg) && !empty($arg){
     $c[] = $arg; 
    }
   }
}

您可以执行以下操作:

$c = array();

function addToC(){
   foreach(func_get_args() as $arg){
    if(is_array($arg) && !empty($arg){
     $c[] = $arg; 
    }
   }
}

是的,做一个函数,不要重复你自己。在我看来,这更像是一个编码风格的问题。如果你发布了一个你有问题的真实代码片段,你会得到更好的答案。是的,做一个函数,不要重复你自己。在我看来,这更像是一个编码风格的问题。如果你发布了一个你有问题的真实代码片段,你会得到更好的答案。@Jon:我想这要看情况了。我请OP给我们一个真实的例子,因为foobar codez在这里没有真正的意义。@Jon:我想这要看情况了。我要求OP给我们一个真实的例子,因为foobar codez在这里没有真正的意义。