【问题标题】:Delete empty value element in array删除数组中的空值元素
【发布时间】:2012-01-30 11:07:04
【问题描述】:
Array
    (
      [0] => 0   //value is int 0 which isn;t empty value
      [1] =>     //this is empty value
      [2] =>     //this is empty value
    )

我想让上面的数组如下,谁能帮帮我?

非常感谢

Array
    (
      [0] => 0
    )

【问题讨论】:

  • 那些空值是什么?它们是假的、NULL、空字符串还是其他什么?那个0呢?是整数 0,还是字符串“0”?在数组上使用var_dump() 来确定值的类型。

标签: php


【解决方案1】:

您可以使用array_filter 删除空值(null, false,'',0):

array_filter($array);

如果您不想从数组中删除0,请参阅@Sabari 的回答:

array_filter($array,'strlen');

【讨论】:

  • 不知道第二个参数是可选的,那很好。
  • @Zulkhaery Basrul,array_filter 会认为值 0 是空值,所以最终结果是一个空数组,这不是我想要的
  • 从 PHP 8.1 开始,strlen 现在将发出一个不推荐使用的错误“strlen(): Passing null to parameter #1 ($string) of string is deprecated”
【解决方案2】:

你可以使用:

仅删除 NULL 值:

$new_array_without_nulls = array_filter($array_with_nulls, 'strlen');

删除错误值:

$new_array_without_nulls = array_filter($array_with_nulls);

希望这会有所帮助:)

【讨论】:

  • 从 PHP 8.1 开始,strlen 现在将发出一个不推荐使用的错误“strlen(): Passing null to parameter #1 ($string) of string is deprecated”
  • 另外...strlen 回调也将删除空字符串和false 值(除了null
【解决方案3】:
array_filter($array, function($var) {
    //because you didn't define what is the empty value, I leave it to you
    return !is_empty($var);
});

【讨论】:

    【解决方案4】:

    这是array_filter 的典型案例。您首先需要定义一个函数,如果应该保留该值,则返回 TRUE,如果应该删除该值,则返回 FALSE

    function preserve($value)
    {
        if ($value === 0) return TRUE;
    
        return FALSE;
    }
    
    $array = array_filter($array, 'preserve');
    

    然后您在回调函数(此处为preserve)中指定什么是空的,什么不是。你的问题中没有具体写,所以你需要自己做。

    【讨论】:

      【解决方案5】:

      快速查找数字也为零 (0)

          var_dump(  
                  array_filter( array('0',0,1,2,3,'text') , 'is_numeric'  )
              );
      /* 
      print :
      array (size=5)
        0 => string '0' (length=1)
        1 => int 0
        2 => int 1
        3 => int 2
        4 => int 3
      
      */
      

      【讨论】:

        猜你喜欢
        • 2011-04-08
        • 2023-03-09
        • 1970-01-01
        • 2018-08-06
        • 2013-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多