php合并数组(php合并数组有几种方式)

PHP中有很多非常好用的数组处理函数。有80多个PHP数组函数的官方文档。但在使用过程中,有些数组的使用频率更高。我会把这些函数整理成工具函数,然后集成到WPJ

PHP中有很多非常好用的数组处理函数。有80多个PHP数组函数的官方文档。但在使用过程中,有些数组的使用频率更高。我会把这些函数整理成工具函数,然后集成到WPJAM Basic中,方便我的二次开启。现在,把它们分类。如果你像我一样基于WPJAM Basic做二次开发,也可以用:

wpjam_array_excerpt

PHP从关联数组中移除指定的键值对,通常使用unset函数,比如:

$ array =[& # 39;姓名& # 39;= & gt'书桌& # 39;, '描述& # 39;= & gt'详细描述& # 39;'价格& # 39;= & gt100];unset($array[& # 39;价格& # 39;]);unset($array[& # 39;描述& # 39;]);print _ r($ array);// ['姓名& # 39;= & gt'书桌& # 39;]如果要移除多个键值对,就要多次调用unset函数,所以把它合并成一个函数:

函数wpjam_array_except($array,$ keys){ if(is _ string($ keys)){ $ keys =[$ keys];} foreach($ keys as $ key){ unset($ array[$ key]);}返回$ array}所以您可以通过以下方式删除键值对:

$ array = WP jam _ array _ except($ array,[& # 39;价格& # 39;,'描述& # 39;]);如果只删除了一个键值对,也可以直接传递字符串:

$ array = WP jam _ array _ except($ array,& # 39;价格& # 39;);Wpjam_array_filter当我们使用array_filter过滤一个数组时,它不会被递归调用,也就是说如果其中的元素也是数组,就不会执行同样的过滤操作。

$ array =[& # 39;一& # 39;= & gt'一& # 39;, 'b & # 39= & gtnull,& # 39;c & # 39= & gt['c1 & # 39= & gt'c1 & # 39, 'c2 & # 39= & gtnull,& # 39;c3 & # 39= & gt'c3 & # 39]];var_dump(array_filter($array,& # 39;is _ exists & # 39));输出是:

数组(2){[& # 34;一& # 34;]= & gt;字符串(1)& # 34;一& # 34;["c & # 34]= & gt;数组(3){[& # 34;c1 & # 34]= & gt;字符串(2)& # 34;c1 & # 34["c2 & # 34]= & gt;NULL[& # 34;c3 & # 34]= & gt;字符串(2)& # 34;c3 & # 34}}但是我们在处理一些数据的时候,比如后台字段的提交,我们希望过滤掉空值。如果元素也是一个关联数组,我们希望关联数组元素中的空值也被过滤掉。所以我们编写了函数wpjam_array_filter来实现array_filter的递归调用:

函数wpjam_array_filter($array,$callback,$ mode = 0){ foreach($ array as $ key = & gt;& $ value){ if(is _ array($ value)){ $ value = WP jam _ array _ filter($ value,$callback,$ mode);}}return array_filter($array,$callback,$ mode);}同一个数组:

$ array =[& # 39;一& # 39;= & gt'一& # 39;, 'b & # 39= & gtnull,& # 39;c & # 39= & gt['c1 & # 39= & gt'c1 & # 39, 'c2 & # 39= & gtnull,& # 39;c3 & # 39= & gt'c3 & # 39]];var _ dump(WP jam _ array _ filter($ array,& # 39;is _ exists & # 39));输出是:

数组(2){[& # 34;一& # 34;]= & gt;字符串(1)& # 34;一& # 34;["c & # 34]= & gt;数组(2){[& # 34;c1 & # 34]= & gt;字符串(2)& # 34;c1 & # 34["c3 & # 34]= & gt;字符串(2)& # 34;c3 & # 34} } WP jam _ array _ first PHP的array_filter()函数允许我们通过回调函数对数组进行过滤,但返回的是过滤后的数组。但是很多时候,我们只是要求返回过滤后的数组的第一个元素:

函数wpjam_array_first($array,$callback=null){if(!is _ array($ array)){返回null} if($ callback & & is _ callable($ callback)){ foreach($ array as $ key = & gt;$value){ if(call _ user _ func($ callback,$ value,$ key)){ return $ value;} } } else { return current($ array);}}使用一个非常简单的:

$array= [100,200,300];$ value = WP jam _ array _ first($ array,function($ value){ return $ value & gt;= 150;});// 200wpjam_array_merge如果我们要合并的数组是一个多维关联数组,那么如果我们使用array_merge_recursive()函数进行合并,我们不会覆盖键名,而是将多个键名相同的值递归合并到一个数组中。

$ ar1 = array(& # 34;color & # 34= & gt数组(& # 34;红色& # 34;, "绿色& # 34;), "aa & # 34);$ ar2 = array(& # 34;color & # 34= & gt数组(& # 34;绿色& # 34;, "蓝色& # 34;), "bb & # 34);$ result = array _ merge _ recursive($ ar1,$ ar2);print _ r($ result);输出结果:

[ 'color & # 39= & gt[(int)0 = & gt;'红色& # 39;,(int)1 = & gt;'绿色& # 39;,(int)2 = & gt;'绿色& # 39;,(int)3 = & gt;'蓝色& # 39;],(int)0 = & gt;'aa & # 39,(int)1 = & gt;'bb & # 39]实际上,我们希望子数组中的相同值被覆盖,所以我们写了一个函数来深度合并多维数组:

函数wpjam_array_merge($arr1,$ arr 2){ foreach($ arr 2 as $ key = & gt;$value){if((is_array($value) &&!WP _ is _ numeric _ array($ value))& &(isset($ arr 1[$ key])& & is _ array($ arr 1[$ key])&!WP _ is _ numeric _ array($ arr 1[$ key])){ $ arr 1[$ key]= WP jam _ array _ merge($ arr 1[$ key],$ value);} else { $ arr 1[$ key]= $ value;} } return $ arr1}要合并的同一个数组:

$ ar1 = array(& # 34;color & # 34= & gt数组(& # 34;红色& # 34;, "绿色& # 34;), "aa & # 34);$ ar2 = array(& # 34;color & # 34= & gt数组(& # 34;绿色& # 34;, "蓝色& # 34;), "bb & # 34);$result = wpjam_array_merge($ar1,$ ar2);print _ r($ result);结果如下:

[ 'color & # 39= & gt[(int)0 = & gt;'绿色& # 39;,(int)1 = & gt;'蓝色& # 39;],(int)0 = & gt;'bb & # 39]一般不建议使用wpjam_array_merge来合并多维索引数组。

wpjam_array_pull

要从关联数组中移除和返回指定的键值,通常需要两步,首先取出它,然后是未设置数组中的键值对:

$ array =[& # 39;姓名& # 39;= & gt'书桌& # 39;, '价格& # 39;= & gt100];$ value = $ array[& # 39;姓名& # 39;];unset($array[& # 39;姓名& # 39;]);如果每次都这样,就有点烦了,可以把这两步合并成一个函数,也可以在数组中没有这个键对应的元素时设置默认值。

函数wpjam_array_pull(&$array,$key,$ default = null){ if(isset($ array[$ key]){ $ value = $ array[$ key];unset($ array[$ key]);返回$ value} else { return $ default}}那就直接调用吧:

$name= wpjam_array_pull($array,& # 39;姓名& # 39;);WPJAM _ ARRAY _ PUSH PHP关联数组可以通过三种方式插入新元素:

$ array[$ insert _ key]= $ insert _ value;//最后插入$ array = array _ merge ($ array,$ Insert _ array);//合并到最后一个$ array = $ array+$ insert _ array;//在前面插入。可以看出,插入到关联数组中的元素的位置无法指定,只能在前面或后面插入,所以这个函数就在将元素插入到关联数组时指定的键之前:

函数wpjam_array_push(&$array,$data,$key=null){if(!is_array($array) ||!is _ array($ data)| | WP _ is _ numeric _ array($ data)){ return;} if(is _ null($ key)){ $ offset = false;} else { $ offset = array _ search($ key,array_keys($array),true);} if($offset!= = false){ $ array = array _ merge(array_slice($array,0,$offset),$data,array _ slice($ array,$ offset));} else { $ array = array _ merge($ array,$ data);}}比如下面的& # 39;在$专栏作者& # 39;在[& # 39;]page _ title & # 39;= & gt'第&#39页;] :

wpjam_array_push($columns, ['page_title'=>'页面标题'], 'author');

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/63398.html

发表回复

登录后才能评论