PHP二维数组搜索返回数组

 1 $ar = array(
 2     2 => array(
 3         ‘catid‘ => 2,
 4         ‘catdir‘ => ‘notice‘,
 5     ),
 6     5 => array(
 7         ‘catid‘ => 5,
 8         ‘catdir‘ => ‘subject‘,
 9     ),
10     6=> array(
11         ‘catid‘ => 6,
12         ‘catdir‘ => ‘news‘
13     ),
14 );
15
16 $catid = 5;
17 $r = array_filter($ar, function($t) use ($catid) { return $t[‘catid‘] == $catid; });
18 print_r($r);

结果:

1 Array
2 (
3     [5] => Array
4         (
5             [catid] => 5
6             [catdir] => subject
7         )
8
9 )
时间: 2024-10-09 18:27:19

PHP二维数组搜索返回数组的相关文章

hdu1081 DP类最长子段和(二维压缩+前缀和数组/树状数组计数)

题意:给出一个 n * n 的数字矩阵,问最大子矩阵和是多少. 由于和最长子段和问题类似,一开始想到的就是 DP ,一开始我准备用两个循环进行 DP ,对于每一个 (i,j) ,考察(i - 1,j)与(i,j - 1), dp 值代表以该点为右下角的最大矩阵和,同时记录下这个矩阵的左上角坐标,状态转移时通过将原和最大矩阵通过补边推到当前和最大矩阵.但是其实这种做法有一个明显的问题,就是转移时,补上边后 dp 值相同怎么办,dp 值相同而矩阵不同的话会影响到下一次状态转移后补上的矩阵的情况,从而

二维最大和子数组

1.设计思路 因为计算了一位的最大和子数组,所以想办法将二维的数组转换成一维子数组进行求解: 首先,将二维数组的第一行(列)赋值到新的一维数组中,在一维的数组中求得子数组的最大值, 然后,将二维数组的第二行(列)加到一维数组中,再次求得子数组的最大值,并和第一步求得的最大值进行比较,若新的值比较大,留下最大值,如果新值比较小,退出这一个循环,从第二行(列)开始第一步,这样就可以求出最大和子数组: 2.源代码 #include<iostream> #include<ctime> us

$[SHOI2007]$ 园丁的烦恼 二维数点/树状数组

\(Sol\) 设一个矩阵的左上角为\((x_1,y_1)\),右下角为\((x_2,y_2)\),\(s_{x,y}\)是到\((1,1)\)二维前缀和,那么这个矩阵的答案显然是\(s_{x_2,y_2}-s_{x_1-1,y_2}-s_{x_2,y_1-1}+s_{x_1-1,x_2-1}\).考虑把每个询问拆成这么四个二维前缀和的询问.将所有询问的\(s_{x,y}\)按照\(x\)排序,依次计算,这样我们就可以忽略\(x\)的限制而只考虑\(y\)的限制了.每次扫到一个询问,先把\(x\

【BZOJ】1047: [HAOI2007]理想的正方形(单调队列/~二维rmq+树状数组套树状数组)

http://www.lydsy.com/JudgeOnline/problem.php?id=1047 树状数组套树状数组真心没用QAQ....首先它不能修改..而不修改的可以用单调队列做掉,而且更快,只有O(n^2).而这货是n^2log^2n的建树...虽然查询是log^2n...但是建树那里就tle了.. 那么说题解... 先orz下,好神.. 我怎么没想到单调队列orz 首先我们维护 行 的单调队列,更新每个点在 列 距离内的最小and最大的值 然后我们维护 列 的单调队列,更新每个点

php嵌套数组递归搜索返回数组key

var rewardTypes={"experience":{"\u7ecf\u9a8c\u503c":{"1":"\u660e\u661f\u6587\u827a\u996d","2":"\u6587\u827a","3":"\u963f\u91cc\u5df4\u5df4\u7f51"}},"money":{"\u

poj 2155 Matrix(二维树树状数组)

Matrix Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 19113   Accepted: 7193 Description Given an N*N matrix A, whose elements are either 0 or 1. A[i, j] means the number in the i-th row and j-th column. Initially we have A[i, j] = 0 (1

函数功能:传入一个数组,返回数组中第二大数。已知数组中的对象都是数字构成的字符串,且任意两元素不相等。 如传入:@[@&quot;1&quot;,@&quot;2&quot;,@&quot;3&quot;,@&quot;4&quot;],返回@&quot;3&quot;

- (NSString *)secondMaxItem:(NSArray *)ary { int max=[ary[0] intValue]; int secondmax=[ary[1] intValue]; max=[ary[0] intValue]>[ary[1] intValue]?[ary[0] intValue]:[ary[1] intValue]; secondmax=[ary[0] intValue]>[ary[1] intValue]?[ary[1] intValue]:[ar

返回一个二维数组最大矩阵的和

设计思想: 首先肯定是把二维转化为一维数组来比较,这样,先从第一行开始,把第一行看成是一维数组选出最大子数组具体实现是,设子数组和为sum=0,另设b=0,a[0][i]从a[0][0]开始检索当b<0时b=a[0][i]否则b=b+a[0][i]只有当b>sum时sum=b,(首先保证sum的初次赋值是大于0然后就是对b的操作首次出现正数时赋给b此时sum=0,b>sum,所以sum=b,然后继续上一步对b的正负性的判断分解为,开始由上一步b>0所以b=b+a[0][i],若a[

c++ 依据输入动态声明数组(一维,二维)

较早的编译器是不同意这样做的,所以一些书籍比方以Tc解说的书本都说数组的下标不能是变量.在vc6.0下亦是如此. 只是在一些较新的编译器如dev c++已经支持了,例如以下代码不会报错 #include <stdio.h> #include <stdlib.h> int main() { int a; int i; scanf("%d",&a); int c[a]; for( i =0 ;i<a;i++) scanf("%d",