php如何将元素插入到数组中,如果不为null

时间:2017-02-10 15:42:25

标签: php arrays

只有当value不为null时,我才需要用一个元素列表填充一个数组。 如果要追加的值为空,有没有办法跳过数组填充?

例如:

$list = array();
for ($i = 1; $i <= 10; $i++) {
    $modulo = ($i % 2);
    if ($modulo) $list[] = $i;
}

有没有办法将循环中的两个语句写入一个唯一的而不使用$ modulo变量

类似......

$list = array();
for ($i = 1; $i <= 10; $i++) {
    $list[] = ($i % 2);
}

预期的行为是$ list数组必须包含1,3,5,7,9 ......

这不是真实的例子,因为($ i%2)必须用在380k元素数组上应用的复杂函数替换,并且可能返回一些或null。我想排除空值。

2 个答案:

答案 0 :(得分:1)

这样冷静怎么样:

$list = array();
for ($i = 1; $i <= 10; $i++) {
   ($i%2) ? ($list[] = $i) : "";
}

然而,你描述它有点令人困惑。也许你想要:

$list = array();
for ($i = 1; $i <= 10; $i++) {
   (!is_null($i%2)) ? ($list[] = $i) : "";
}

或者如果你想要函数的结果:

$list = array();
for ($i = 1; $i <= 10; $i++) {
   (!is_null($a = ($i%2))) ? ($list[] = $a) : "";
}

必须是其中之一; - )

答案 1 :(得分:0)

<强>一:

$list = array();
for (i = 1; $i <= 10; $i++) {
    $modulo = ($i % 2);
    if (!is_null($modulo)){
       $list[] = $i;
   }
}

如果该值不是PHP null,那么您可以将其添加到$list数组。

<强>两个

$list = array();
for (i = 1; $i <= 10; $i++) {
    $list[] = $i;
}

$list = array_filter($list);

PHP array_filter会删除数组中的所有falseynullempty值,如果这符合您可能具有的值。