php 筛选数组,2020-07-24 php 通过数组键值对筛选数组

筛选数组 $listMenu

Array

(

[0] => Array

(

[type] => 0

[min] => 0

)

[1] => Array

(

[type] => 1

[min] => 1

)

)

目标数组 $res

Array

(

[0] => Array

(

[id] => 183

[type] => 0

[min] => 0

)

[1] => Array

(

[id] => 184

[type] => 0

[min] => 1

)

[2] => Array

(

[id] => 185

[type] => 0

[min] => 2

)

[3] => Array

(

[id] => 186

[type] => 0

[min] => 3

)

[4] => Array

(

[id] => 187

[type] => 1

[min] => 0

)

[5] => Array

(

[id] => 188

[type] => 1

[min] => 1

)

[6] => Array

(

[id] => 189

[type] => 1

[min] => 2

)

[7] => Array

(

[id] => 190

[type] => 1

[min] => 3

)

[8] => Array

(

[id] => 191

[type] => 2

[min] => 0

)

[9] => Array

(

[id] => 192

[type] => 2

[min] => 1

)

[10] => Array

(

[id] => 193

[type] => 2

[min] => 2

)

[11] => Array

(

[id] => 194

[type] => 2

[min] => 3

)

[12] => Array

(

[id] => 195

[type] => 3

[min] => 0

)

[13] => Array

(

[id] => 196

[type] => 3

[min] => 1

)

[14] => Array

(

[id] => 197

[type] => 3

[min] => 2

)

[15] => Array

(

[id] => 198

[type] => 3

[min] => 3

)

)

思路,用array_filter() 函数 过滤

array_filter() 函数使用

function test_odd($var)

{

return($var & 1);

}

$a1=array("a","b",2,3,4);

print_r(array_filter($a1,"test_odd"));

?>

PHP闭包 function() use(){}

闭包的语法很简单,需要注意的关键字就只有use,use意思是连接闭包和外界变量。

$a =function()use($b) {

}

代码

foreach ($listMenu as $key=>$val){

$dataArr[]=array_filter($res,function ($var)use ($val){

if($var['type']==$val['type']&&$var['min']==$val['min']) return true;

});

}

//数组降维处理

array_walk($dataArr, function(&$v) {$v = current($v);});

print_r($dataArr);

输出

Array

(

[0] => Array

(

[id] => 183

[type] => 0

[min] => 0

)

[1] => Array

(

[id] => 188

[type] => 1

[min] => 1

)

)

升级版

/**

*使用数组筛选

*

*/

static public function getMenuAll(){

$res=[]

//return self::reSort($result);

$item['pid'] = 0;

$result = self::screen($res,$item);

return $result;

}

/**

* 筛选数组方法

* @param $res

* @param $val

* @return array

*/

static public function screen($res,$val){

return array_filter($res,function ($var) use ($val){

if($var['type']==$val['type']&&$var['min']==$val['min']) return true;

});

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298055.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python省市区三级联动_Django Admin实现三级联动的示例代码(省市区)

通过自定义Admin的模板文件实现省市区的三级联动.要求创建记录时,根据省>市>区的顺序选择依次显示对应数据.修改记录时默认显示已存在的数据.Modelclass Member(models.Model):name models.CharField(max_length100, verbose_name姓名)province models.CharField(max_l…

[LeetCode]119.Pascal#39;s Triangle II

题目 Given an index k, return the kth row of the Pascal’s triangle. For example, given k 3, Return [1,3,3,1]. Note: Could you optimize your algorithm to use only O(k) extra space? 思路 无 代码 /**------------------------------------* 日期&#xff1a…

2010.7.29 模式对话框

为什么点击ONOK后,对话框上的控件资源会被删除?OnOK做了什么事儿? 假如有一个对话框Class CMyDialog 我在CMyDialog中,声明了一个m_button,然后在OnInitDlg()中create这个buttton,即m_button.create() 然后…

终于有人做了我一直想做而不敢做的事。。

1 初中物理是不是学过,受力面积小,相应的压力就大~我觉得应该直接趴上去,一定行~反正我也是瞎说的2 不是我吹,换成是我,这包子能吃五屉3 交警蜀黍耐心的领着这位行人过马路,麻烦你快…

.NET 6 中的隐式命名空间引用

.NET 6 中的隐式命名空间引用Intro之前写过一篇隐式命名空间引用的大概介绍,在一些小的测试项目中也有在用,一直没作为示例给大家分享,主要原因在于之前看到了一个关于隐式命名空间引用的 Github issue 提到会有一些破坏性的变更,…

vscode函数跳转插件_人生苦短,我们为 Cocos Creator 开发的插件和工具

在使用 Cocos Creator 开发项目的过程中,为了提高开发效率我们开发了很多扩展插件,本文介绍常用的几款,抛砖引玉,希望给大家带来帮助。腾讯开心鼠英语网页扩展:运行时查看场景节点树Cocos Creator 本地项目通常会在 Ch…

SQLSERVER 日志收缩

SQL2008 的收缩日志 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:(SQL2005)BackupLog DNName with no_loggodumptransaction DNName with no_loggoUSE DNName DBCC SHRINKFILE (2)Go---------------…

压缩JS和CSS常用的工具

前些时候在发现将 JS和CSS压缩一下,的确有好处。在网上找了一下,发现下面的两款工具比较不错。 经过资源(比如 CSS 和 JavaScrip 文件)压缩测试了。 其中一个工具就是 YUI Compressor,一个来自Yahoo! Developer Networ…

php+转义实体字符,PHP针对HTML实体字符的转义函数

htmlspecialchars()转义特别的字符为HTML实体;& (ampersand) becomes & " (double quote) becomes " when ENT_NOQUOTES is not set. (single quote) becomes only when ENT_QUOTES is set. (greater than) becomes >htmlspeci…

解决win7“该文件没有与之关联的程序来执行该操作”

机器装好了win7系统。右击“计算机”管理的时候,出现“该文件没有与之关联的程序来执行该操作”能是因为删除了start menu下的某个文件,经过分析,找到了如下的解决方法:定位到注册表HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\Manage\c…

绝不能放进微波炉的10样东西,最后一个太意外

全世界只有3.14 % 的人关注了爆炸吧知识前一阵,网上有一段用微波炉加热葡萄的视频,成了新闻热点。研究员在实验中发现,两颗葡萄放进微波炉后,竟然会产生电弧。图片来源网络之前小编加热汉堡的时候,本来想大快朵颐一顿&…

在 .NET 6 中使用 DATEONLY 和 TIMEONLY

在 .NET 6 中使用 DATEONLY 和 TIMEONLY在 即将发布的.NET 6中,引入了两种期待已久的类型作为核心库的一部分。DateOnly和TimeOnly允许开发人员表示 DateTime 的日期或时间部分。这两种新类型是结构体(值类型),可以在您的代码独立…

vue 3.0 正式版_Vuejs 3 Release:One Piece. Vuejs 3.0 正式版发布!代号:海贼王

Vuejs 3.0 在北京时间2020年9月19日凌晨,终于发布了 3.0 版本,代号:One Piece。此次vue3.0 为用户提供了全新的 composition-api 以及更小的包大小,和更好的 TypeScript 支持。Vue3.0发布链接​github.comVue 是当前非常流行的框架…

i-doIT 0.9.9-7发布 CMDB配置管理数据库

i-doIT是一个基于ITIL技术的CMDB(配置管理数据库)。它能够记载IT系统及其变化,对变化定义了应急方案,以及显示重要信息,并有助于确保一个稳定和高效的IT网络运作。由于其模块化的架构,它可以部署功能性的附…

Linux IPC实践(6) --System V消息队列(3)

消息队列综合案例 消息队列实现回射客户/服务器 server进程接收时, 指定msgtyp为0, 从队首不断接收消息 server进程发送时, 将mtype指定为接收到的client进程的pid client进程发送的时候, mtype指定为自己进程的pid client进程接收时, 需要将msgtyp指定为自己进程的pid, 只接收…

centos 新装mysql 进入,centos5安装 mysql 提示需要用户及密码进入?Duplicate entry 'localhost-' for key 1...

需要用户名及密码,可是新安装的mysql是没有密码的,这是为什么?今天帮朋友试验了一把解决了这个问题:导致这个错误的原因:因为安装系统时设置了hostname为localhost导致mysql在创建表的时候没有创建成功。因此mysql库中…

100斤的铁和100斤女生哪个重?

1 你是不是有别的猫了?-2 兔兔这么可爱我们沾点孜然再吃会更香3 解压的最好方式4 人不如猫系列5 这演技没sei了!!!6 100斤的铁和100斤女生哪个重?7 如果只能选一个,你会选什么你点的每个赞&#xff…

JailbreakMe.com-最新浏览器模式破解iPhones,iPads和iPod Touches方法

一位***建立了该网站(JailbreakMe.com),可以通过浏览器登录的形式破解几乎所有的iOS,这包括了iPhone,iPad,和iPod Touch,将解除Apple对这些设备的软件限制。 用户如果想尝试未经授权的app或者想在多个不同国家使用这些设备,都可以…

localStorage、sessionStorage用法总结

localStorage和sessionStorage一样都是用来存储客户端临时信息的对象。 他们均只能存储字符串类型的对象(虽然规范中可以存储其他原生类型的对象,但是目前为止没有浏览器对其进行实现)。 localStorage生命周期是永久,这意味着除…

谷歌开源3D舞蹈生成模型FACT,舞姿清奇!

文 | 御坂弟弟出品 | OSC开源社区(ID:oschina2013)谷歌开源了其基于 AIST 的 3D 舞蹈生成模型 FACT。该模型不仅可以学习音乐-运动对应关系,还可以生成以音乐为基础的 3D 运动序列。此前,谷歌层发布了大规模的多模态 3…