php删除数组中的 "empty"值

标签 php

我正在尝试使用以下函数从空值中清除数组:

function remove_empty_cells($data)
{
    $findthis = array("/\r\n/u", "/\n/u", "/\r/u", "/\s+/u", "~\x{00a0}~");
    for($i=0; $i<count($data); $i++)
    {
        $data[$i] = preg_replace($findthis, " ", $data[$i]);
        $data[$i] = htmlspecialchars_decode(htmlspecialchars($data[$i], ENT_SUBSTITUTE, 'UTF-8'));
        if (empty($data[$i]) ||
            mb_strlen($data[$i]) < strlen($data[$i]) ||
            is_null($data[$i]) ||
            $data[$i] = " " ||
            $data[$i] = "" ||
            $data[$i] == "0")
        {
             array_splice($data, $i, 1);
        };//end if
    };//end for
    return $data;
};//end func

空值不会消失,我无法识别它们。

数据:
array (
  0 => '
',
  1 => 'BEGIN:VCARD 
',
  2 => '
',
  3 => '
',
  4 => '
',
  5 => '
',
  6 => '
',
  7 => 'VERSION:2.1 
',

...
可能是编码问题之类的..它看起来不像多字节字符..
我得到的结果是:
array (
  0 => 'BEGIN:VCARD 
',
  1 => '
',
  2 => '
',
  3 => 'VERSION:2.1 
',

...

最佳答案

您可以使用 PHP 函数 array_filter()使用回调函数删除空值,如下所示

<?php
    $array = array("sampe1", "\n  ", "   ", "sample2", null, "sample4", "rajesh", "suresh", "test", "");

    $result = array_filter($array, function($v){
       return trim($v);
    });

    var_dump($result);

    $res = array_slice($result);

    var_dump($res);
?>

这将打印出:
array(6) { [0]=> string(6) "sampe1" [3]=> string(7) "sample2" [5]=> string(7) "sample4" [6]=> string(6) "rajesh" [7]=> string(6) "suresh" [8]=> string(4) "test" }
array(6) { [0]=> string(6) "sampe1" [1]=> string(7) "sample2" [2]=> string(7) "sample4" [3]=> string(6) "rajesh" [4]=> string(6) "suresh" [5]=> string(4) "test" }

SYNTAX - array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )

关于php删除数组中的 "empty"值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43020364/

相关文章:

php - 在 Prestashop 模块中使用命名空间

php - 如何在 wp/buddypress 中显示用户上次访问的页面?

php - 如何将数组传递到 Laravel Controller

php - PHP/Zend Framework 中的国家/地区到时区

php - mysql 获取其他列中具有相同值的第一个和最后一个条目

php - 什么更快 : include() or file_get_contents()?

PHP-FPM 在执行繁重工作时用户过多时崩溃

php - Symfony2 - 如何为多个应用程序设置 Doctrine APC 缓存前缀

php - PDO SQLite 无法绑定(bind) NOT IN 表达式

php - 如果 ID 不是关系型,如何显示 MYSQL Join 的内容