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" }