php删除";“空的”;数组中的值

php删除";“空的”;数组中的值,php,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]); $da

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

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 => 'BEGIN:VCARD 
',
  1 => '
',
  2 => '
',
  3 => 'VERSION:2.1 
',

您可以使用PHP函数
array\u filter()
删除空值

<?php
$array = array("sampe1", "", "sample2", null, "sample4", "rajesh", "suresh", "test", "");
var_dump($array);
echo "<hr/>";
$result = array_filter($array);                 
var_dump($result);
?>


不太清楚您在代码中做了什么,但这里有一些东西可以从php数组中删除空元素

代码片段

<?php
   $array = array("apple", "", 2, null, -5, "orange", 10, false, "");
   var_dump($array);
   echo "<br>";

   // Filtering the array
   $result = array_filter($array);                 
   var_dump($result);
?>


您可以使用PHP函数
array\u 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数组_过滤器(数组$array[,可调用$callback[,int$flag=0])


删除PHP中的空数组插槽,在数组中留下漏洞

从数组中删除空元素的一种快速方法是使用array_filter,而不使用回调函数。但这也将删除0(零)

$myArray=array\u过滤器($myArray)

或者,array_diff允许您决定保留哪些元素。以下示例将仅删除空字符串,但保留0

$myArray=array_diff($myArray,array(“”))


删除PHP中的空数组插槽,并压缩数组

这两个函数都会在空条目原来所在的位置留下“间隙”。您可以在下面看到它,其中索引是[1]和[3],而不是[0]和[1]

$myArray=array(0,'red','blue'); 打印(数组过滤器($myArray)); 排列 ( [1] =>“红色” [3] =>“蓝色” )

打印(数组差异($myArray,数组(“”)); 排列 ( [0] => 0 [1] =>“红色” [3] =>“蓝色” )

阵列\u切片可以消除这些间隙:

$myArray=array(0,'red','blue'); $myArray=array\u过滤器($myArray); 打印(数组切片($myArray,0)); 排列 ( [0]=>“红色” [1] =>“蓝色” )

现在,以您的cas为例

$arr=['','BEGIN:VCARD','','','','','',VERSION:2.1']//初始数组 印刷费($arr); $myArray=array\u过滤器($arr); 打印(数组切片($myArray,0))

初始输出: 阵列([0]=>[1]=>开始:VCARD[2]=>[3]=>[4]=>[5]=>[6]=>[7]=>版本:2.1)

最终输出: 阵列([0]=>开始:VCARD[1]=>版本:2.1)


请张贴您的data@LeoTahk检查我提供的以下解决方案,修剪工作,谢谢你指出它。标记为已回答。简单数组过滤器没有效果。我想这不会删除像
“\n\n”
“\r\n”
这样的值,我只是使用了$fileContents=array\u过滤器($fileContents);打印(数组切片($fileContents,0));结果是:数组([0]=>[1]=>开始:VCARD[2]=>[3]=>[4]=>[5]=>[6]=>[7]=>版本:2.1..未删除:/$arr=['','BEGIN:VCARD','','','','','','','VERSION:2.1'];下一步:打印($arr);$myArray=Array\u过滤器($arr);打印($myArray\u切片($myArray,0));初始输出:数组([0]=>开始:VCARD[4]=>=>[6]=>[7]=>版本:2.1)最终输出:数组([0]=>开始:VCARD[1]=>版本:2.1)我的数据的工作版本是:
$Array=Array\u过滤器($Array,function($v){return trim($v);$Array=Array\u切片($Array,0,count($Array));
array(6) { [0]=> string(6) "sampe1" [2]=> string(7) "sample2" [4]=> string(7) "sample4" [5]=> string(6) "rajesh" [6]=> string(6) "suresh" [7]=> string(4) "test" 
<?php
   $array = array("apple", "", 2, null, -5, "orange", 10, false, "");
   var_dump($array);
   echo "<br>";

   // Filtering the array
   $result = array_filter($array);                 
   var_dump($result);
?>
<?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" }