沈阳格力专卖店 发表于 2017-3-29 12:51:40

php函数array_filter()过滤php空数组_php去掉空数组_数组键名重置序列化

之前判断数组中元素是否为空的时候,一般用foreach,因为具体应用中多是要foreach,其实如果单纯的过滤php空数组的话,可以使用 php函数array_filter() .
array array_filter ( array [, callback callback] )
array_filter() 依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE,则 array 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。
如果没有提供 callback 函数,array_filter() 将删除 array 中所有等值为 FALSE 的条目.这也就是过滤数组空白元素的精华所在.
如下例:

<?php
$entry = array(
0 => '极速影院',
1 => false,
2 => 1,
3 => null,
4 => '',
5 => 'http://www.15ms.com',
6 =>'0'
);
print_r(array_filter($entry));
?>

上面代码输出结果为:
Array
(
    => 极速影院
    => 1
    => http://www.15ms.com
)
可以看出,false,null,和真正的''空白以及0都被过滤了,而且数组的下标没有改变.
这样就引申出来一个新问题,如果我想对array_filter()处理过的新数组的键名序列化成0,1,2,3这样的怎么办呢?这在数组比较中是很有用的,那么需要用到 php的sort()函数.
bool sort ( array &array [, int sort_flags] )
本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。
注意: 本函数为 array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。
如果成功则返回 TRUE,失败则返回 FALSE。

<?php
$my_array = array("0" => "极速影院", "2" => "1", "5" => "http://www.15ms.com");
sort($my_array);
print_r($my_array);
?>


输出结果为:

Array
(
=> 1
=> http://www.15ms.com
=> 极速影院
)


有序化以后就可以进行大小比较了,这在纯数字且需要比较大小的数字中是十分有效的.
页: [1]
查看完整版本: php函数array_filter()过滤php空数组_php去掉空数组_数组键名重置序列化