php 在数组的数据中查询和搜索(数组模糊查询)

本文介绍PHP中使用array_filter进行单一条件、时间段及复合条件查询的方法,并展示了如何实现模糊查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、单一条件查询(==)

在数组中数据中,通过查询条件得出想要的数组

 <meta charset="utf-8">

<?php
$ar = array(
    2 => array(
        'catid' => 2,
        'catdir' => 'notice',
    ),
    5 => array(
        'catid' => 5,
        'catdir' => 'subject',
    ),
    6=> array(
        'catid' => 6,
        'catdir' => 'news'
    ),
);

$catdir_so = "subject";
$r = array_filter($ar, function($t) use ($catdir_so) { return $t['catdir'] == $catdir_so; });
print_r($r);
?>

二、时间段查询(查个时间段内的数据)

在数组中数据中,通过查询条件得出想要的数组

查询某个时间段范围内的数据

 <meta charset="utf-8">

<?php
$ar = array(
    2 => array(
        'catid' => '6',
        'catdir' => '1522332388000',//2018-03-29 22:06:28
    ),
    6=> array(
        'catid' => '5',
        'catdir' => '1522329351000'//2018-03-29 21:15:51
    ),
    7=> array(
        'catid' => '4',
        'catdir' => '1522328237000'//2018-03-29 20:56:15
    ),
    9=> array(
        'catid' => '3',
        'catdir' => '1522327772000'//2018-03-29 20:49:32
    ),
    10=> array(
        'catid' => '2',
        'catdir' => '1522325351000'//2018-03-29 20:09:11
    ),
    5 => array(
        'catid' => '1',
        'catdir' => '1522323606000',//2018-03-29 19:40:06
    ),

);

$catdir_so1 = "1522325351000";//2018-03-29 20:09:11  2
$catdir_so2 = "1522329351000";//2018-03-29 21:15:51  5
$r = array_filter($ar, function($t) use ($catdir_so1,$catdir_so2) { return $t['catdir'] > $catdir_so1 and $t['catdir'] < $catdir_so2 ; });
print_r($r);

//echo strtotime("2018-03-29 21:15:51");
?>

$r = array_filter($ar, function($t) use ($catdir_so1,$catdir_so2) { return $t['catdir'] > $catdir_so1 and $t['catdir'] < $catdir_so2 ; });

 

 

三、时间段查询再加一个条件(相当案例一加上案例二)

 <meta charset="utf-8">

<?php
$ar = array(
    2 => array(
        'catid' => '6',
		'cat' => 'dd',
        'catdir' => '1522332388000',//2018-03-29 22:06:28
    ),
    6=> array(
        'catid' => '5',
		'cat' => 'dd',
        'catdir' => '1522329351000'//2018-03-29 21:15:51
    ),
    7=> array(
        'catid' => '4',
		'cat' => 'ddfgd',
        'catdir' => '1522328237000'//2018-03-29 20:56:15
    ),
    9=> array(
        'catid' => '3',
		'cat' => 'dd',
        'catdir' => '1522327772000'//2018-03-29 20:49:32
    ),
    10=> array(
        'catid' => '2',
		'cat' => 'dvvd',
        'catdir' => '1522325351000'//2018-03-29 20:09:11
    ),
    5 => array(
        'catid' => '1',
		'cat' => 'ddfgd',
        'catdir' => '1522323606000',//2018-03-29 19:40:06
    ),

);

$catdir_so1 = "1522325351000";//2018-03-29 20:09:11  2
$catdir_so2 = "1522329351000";//2018-03-29 21:15:51  5
$catdir_so3 = "dd";
$r = array_filter($ar, function($t) use ($catdir_so1,$catdir_so2,$catdir_so3) { return $t['cat'] == $catdir_so3 and ($t['catdir'] > $catdir_so1 and $t['catdir'] < $catdir_so2); });
print_r($r);

//echo strtotime("2018-03-29 21:15:51");
?>


$r = array_filter($ar, function($t) use ($catdir_so1,$catdir_so2,$catdir_so3) { return $t['cat'] == $catdir_so3 and ($t['catdir'] > $catdir_so1 and $t['catdir'] < $catdir_so2); });
 

 

四、在数组查询条件是否在数组中

$type_mold_arr=array('1','2');//1=直播
$rsoc = array_values(array_filter($rsoc2, function($t) use ($pid,$type_mold_arr) { return $t['pid'] == $pid and in_array($t['type_mold'],$type_mold_arr)==true; }));//0=只取一组数组(也只取第一组)

 

五、数组模糊查询

	$a=array(
		'0' => array('id'=>1,'pid'=>0,'name'=>'水果'),
		'1' => array('id'=>2,'pid'=>0,'name'=>'蔬菜'),
		'2' => array('id'=>3,'pid'=>1,'name'=>'食品'),
		'3' => array('id'=>4,'pid'=>2,'name'=>'运动'),
		'4' => array('id'=>5,'pid'=>1,'name'=>'电脑'),
		'5' => array('id'=>6,'pid'=>'香果','name'=>'香蕉'),
		'6' => array('id'=>7,'pid'=>4,'name'=>'牛奶'),
		'7' => array('id'=>8,'pid'=>5,'name'=>'西瓜'),
		'8' => array('id'=>9,'pid'=>7,'name'=>'苹果'),
	);
	$arr=$result=array();
	foreach ($a as $key => $value) {
		foreach ($value as $valu) {
			if(strstr($valu, '果') !== false){
					array_push($arr, $key);
			}
		}
	}
	foreach ($arr as $key => $value) {
		if(array_key_exists($value,$a)){
			array_push($result, $a[$value]);
		}
	}
var_dump( $result);

引用:https://www.cnblogs.com/luojie-/p/7832237.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值