我正在尝试使用以下函数从空值中清除数组:
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/