php函数array_filter()过滤php的空元素 - Go语言中文社区

php函数array_filter()过滤php的空元素


<!DOCTYPEhtml>
<html>
<head>
<meta charset="UTF-8"/>

<title>BasicDemo</title>

<link rel="stylesheet"href="vendor/bootstrap/css/bootstrap.min.css"/>判断数组中元素是否为空的时候,一般用foreach,因为具体应用中多是要foreach,其实如果单纯的过滤php空数组的话,可以使用php函数array_filter(). 

arrayarray_filter ( array [, callback callback]) 

array_filter() 依次将 array 数组中的每个值传递到callback 函数。如果 callback 函数返回 TRUE,则 array数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。 

如果没有提供callback 函数,array_filter() 将删除 array 中所有等值为 FALSE的条目.这也就是过滤数组空白元素的精华所在.
如下例: 
Php代码
<?php  
$entry =array(   
            0 =>'k686绿色软件',   
            1 => false,  
            2 => 1,  
            3 => null,  
            4 => '',  
            5 =>'http://www.k686.com',  
            6 =>'0' 
         );  
print_r(array_filter($entry));  
?>  
<?php$entry = array( 0=> 'k686绿色软件', 1 => false, 2=> 1, 3 => null, 4 =>'', 5 => 'http://www.k686.com', 6=>'0');print_r(array_filter($entry));?>

上面代码输出结果为: 
Array 
   [0] => k686绿色软件 
   [2] => 1 
   [5] =>http://www.k686.com 

可以看出,false,null,和真正的''空白以及0都被过滤了,而且数组的下标没有改变. 

这样就引申出来一个新问题,如果我想对array_filter()处理过的新数组的键名序列化成0,1,2,3这样的怎么办呢?这在数组比较中是很有用的,那么需要用到php的sort()函数. 

boolsort ( array &array [, int sort_flags]) 

本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。 

注意: 本函数为array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。 

如果成功则返回TRUE,失败则返回 FALSE。

也可以使用array_values将数组中所有的值并给其建立数字索引的。
arrayarray_values ( array input )

array_values() 返回 input数组中所有的值并给其建立数字索引。
例子 1.array_values() 例子
<?php
$array =array ("size" => "XL", "color" =>"gold");
print_r(array_values($array));
?>
上例将输出:
Array
(
    [0] => XL
    [1] => gold
)
Php代码
<?php  
$my_array = array("0" =>"k686绿色软件", "2" => "1", "5" =>"http://www.k686.com");  
sort($my_array);  
print_r($my_array);  
?> 
<?php$my_array =array("0" => "k686绿色软件", "2" => "1","5" =>"http://www.k686.com");sort($my_array);print_r($my_array);?>

输出结果为: 
Php代码
Array  
(  
    [0] => 1  
    [1] => http://www.k686.com  
    [2] => k686绿色软件  
Array([0] => 1 [1] => http://www.k686.com[2] => k686绿色软件)

有序化以后就可以进行大小比较了,这在纯数字且需要比较大小的数字中是十分有效的.判断数组中元素是否为空的时候,一般用foreach,因为具体应用中多是要foreach,其实如果单纯的过滤php空数组的话,可以使用php函数array_filter(). 

arrayarray_filter ( array [, callback callback]) 

array_filter() 依次将 array 数组中的每个值传递到callback 函数。如果 callback 函数返回 TRUE,则 array数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。 

如果没有提供callback 函数,array_filter() 将删除 array 中所有等值为 FALSE的条目.这也就是过滤数组空白元素的精华所在.
如下例: 
Php代码
<?php  
$entry =array(   
            0 =>'k686绿色软件',   
            1 => false,  
            2 => 1,  
            3 => null,  
            4 => '',  
            5 =>'http://www.k686.com',  
            6 =>'0' 
         );  
print_r(array_filter($entry));  
?>  
<?php$entry = array( 0=> 'k686绿色软件', 1 => false, 2=> 1, 3 => null, 4 =>'', 5 => 'http://www.k686.com', 6=>'0');print_r(array_filter($entry));?>

上面代码输出结果为: 
Array 
   [0] => k686绿色软件 
   [2] => 1 
   [5] =>http://www.k686.com 

可以看出,false,null,和真正的''空白以及0都被过滤了,而且数组的下标没有改变. 

这样就引申出来一个新问题,如果我想对array_filter()处理过的新数组的键名序列化成0,1,2,3这样的怎么办呢?这在数组比较中是很有用的,那么需要用到php的sort()函数. 

boolsort ( array &array [, int sort_flags]) 

本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。 

注意: 本函数为array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。 

如果成功则返回TRUE,失败则返回 FALSE。

也可以使用array_values将数组中所有的值并给其建立数字索引的。
arrayarray_values ( array input )

array_values() 返回 input数组中所有的值并给其建立数字索引。
例子 1.array_values() 例子
<?php
$array =array ("size" => "XL", "color" =>"gold");
print_r(array_values($array));
?>
上例将输出:
Array
(
    [0] => XL
    [1] => gold
)
Php代码
<?php  
$my_array = array("0" =>"k686绿色软件", "2" => "1", "5" =>"http://www.k686.com");  
sort($my_array);  
print_r($my_array);  
?> 
<?php$my_array =array("0" => "k686绿色软件", "2" => "1","5" =>"http://www.k686.com");sort($my_array);print_r($my_array);?>

输出结果为: 
Php代码
Array  
(  
    [0] => 1  
    [1] => http://www.k686.com  
    [2] => k686绿色软件  
Array([0] => 1 [1] => http://www.k686.com[2] => k686绿色软件)

有序化以后就可以进行大小比较了,这在纯数字且需要比较大小的数字中是十分有效的.判断数组中元素是否为空的时候,一般用foreach,因为具体应用中多是要foreach,其实如果单纯的过滤php空数组的话,可以使用php函数array_filter(). 

arrayarray_filter ( array [, callback callback]) 

array_filter() 依次将 array 数组中的每个值传递到callback 函数。如果 callback 函数返回 TRUE,则 array数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。 

如果没有提供callback 函数,array_filter() 将删除 array 中所有等值为 FALSE的条目.这也就是过滤数组空白元素的精华所在.
如下例: 
Php代码
<?php  
$entry =array(   
            0 =>'k686绿色软件',   
            1 => false,  
            2 => 1,  
            3 => null,  
            4 => '',  
            5 =>'http://www.k686.com',  
            6 =>'0' 
         );  
print_r(array_filter($entry));  
?>  
<?php$entry = array( 0=> 'k686绿色软件', 1 => false, 2=> 1, 3 => null, 4 =>'', 5 => 'http://www.k686.com', 6=>'0');print_r(array_filter($entry));?>

上面代码输出结果为: 
Array 
   [0] => k686绿色软件 
   [2] => 1 
   [5] =>http://www.k686.com 

可以看出,false,null,和真正的''空白以及0都被过滤了,而且数组的下标没有改变. 

这样就引申出来一个新问题,如果我想对array_filter()处理过的新数组的键名序列化成0,1,2,3这样的怎么办呢?这在数组比较中是很有用的,那么需要用到php的sort()函数. 

boolsort ( array &array [, int sort_flags]) 

本函数对数组进行排序。当本函数结束时数组单元将被从最低到最高重新安排。 

注意: 本函数为array 中的单元赋予新的键名。这将删除原有的键名而不仅是重新排序。 

如果成功则返回TRUE,失败则返回 FALSE。

也可以使用array_values将数组中所有的值并给其建立数字索引的。
arrayarray_values ( array input )

array_values() 返回 input数组中所有的值并给其建立数字索引。
例子 1.array_values() 例子
<?php
$array =array ("size" => "XL", "color" =>"gold");
print_r(array_values($array));
?>
上例将输出:
Array
(
    [0] => XL
    [1] => gold
)
Php代码
<?php  
$my_array = array("0" =>"k686绿色软件", "2" => "1", "5" =>"http://www.k686.com");  
sort($my_array);  
print_r($my_array);  
?> 
<?php$my_array =array("0" => "k686绿色软件", "2" => "1","5" =>"http://www.k686.com");sort($my_array);print_r($my_array);?>

输出结果为: 
Php代码
Array  
(  
    [0] => 1  
    [1] => http://www.k686.com  
    [2] => k686绿色软件  
Array([0] => 1 [1] => http://www.k686.com[2] => k686绿色软件)

有序化以后就可以进行大小比较了,这在纯数字且需要比较大小的数字中是十分有效的.
</head>

<body>
<headerclass="container">
<h1>BasicDemo</h1>
</header>

<divclass="container">
<div class="control-groupinput-append">
<input type="text"name="name" id="name" form="form" data-required/>

<label for="name"class="add-on"><spanclass="icon-asterisk"></span>Name</label>
</div>

<formid="form">
<div class="control-groupinput-append">
<input type="text"name="nickname" id="nickname" data-required="true"/>

<label for="nickname"class="add-on"><spanclass="icon-asterisk"></span>Nickname</label>
</div>

<div class="control-groupinput-append">
<input type="text"name="site" id="site" />

<label for="site"class="add-on">Site</label>
</div>

<div class="control-groupinput-append">
<input type="text"name="age" id="age" data-required data-pattern="^[0-9]+$"/>

<label for="age"class="add-on"><spanclass="icon-asterisk"></span>Age</label>
</div>

<divclass="btn-group">
<button type="submit"class="btnbtn-primary">Send</button>

<button type="reset"class="btn">Reset</button>
</div>
</form>
</div>

<scriptsrc="vendor/jquery-1.9.0.min.js"></script>

<scriptsrc="../jquery-validate.js"></script>

<script>
$('form').validate({
onKeyup: true,
eachValidField : function(){

$(this).closest('div').removeClass('error').addClass('success');
},
eachInvalidField : function(){

$(this).closest('div').removeClass('success').addClass('error');
}
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_29572055/article/details/51909305
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-06-30 10:35:24
  • 阅读 ( 1176 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢