在数组中根据指定的条件进行搜索

/**
     * 数组中根据指定的条件进行搜索
     * @param $data array 要搜索的目标数组
     * @param $key string 键
     * @param $value mixed 值
     *
     * @return array
     * */
    function search_data($data, $key, $value)
    {
        $result = [];
        // 循环目标数组
        foreach ($data as $k => $v) {
            // 判断当前值中是否存在搜索的key,不存在则跳过
            if (!isset($v[$key])) {
                continue;
            }
            // 判断要搜索的值是否为数组
            if (is_array($value)) {
                // 是数组,判断当前值中是否存在要搜索的值
                if (in_array($v[$key], $value)) {
                    $result[] = $v;
                }
            } else {
                // 不是数组,判断当前值是否等于要搜索的值
                if (($v[$key] == $value)) {
                    $result[] = $v;
                }
            }
        }
        return $result;
    }

示例:

$test_list = [
    ['id' => 1, 'title' => '测试1', 'parent_id' => 0],
    ['id' => 2, 'title' => '测试2', 'parent_id' => 0],
    ['id' => 3, 'title' => '测试3', 'parent_id' => 0],
    ['id' => 4, 'title' => '测试4', 'parent_id' => 0],
    ['id' => 5, 'title' => '测试-子1', 'parent_id' => 1],
    ['id' => 6, 'title' => '测试-子2', 'parent_id' => 2],
    ['id' => 7, 'title' => '测试5', 'parent_id' => 0],
    ['id' => 8, 'title' => '测试-子3', 'parent_id' => 1],
    ['id' => 9, 'title' => '测试-子2-1', 'parent_id' => 6],
    ['id' => 10, 'title' => '测试-子1-1', 'parent_id' => 5],
];

$res = search_data($test_list, 'parent_id', 0);
var_dump($res);

结果:
/*
array(5) {
  [0]=>
  array(3) {
    ["id"]=>
    int(1)
    ["title"]=>
    string(7) "测试1"
    ["parent_id"]=>
    int(0)
  }
  [1]=>
  array(3) {
    ["id"]=>
    int(2)
    ["title"]=>
    string(7) "测试2"
    ["parent_id"]=>
    int(0)
  }
  [2]=>
  array(3) {
    ["id"]=>
    int(3)
    ["title"]=>
    string(7) "测试3"
    ["parent_id"]=>
    int(0)
  }
  [3]=>
  array(3) {
    ["id"]=>
    int(4)
    ["title"]=>
    string(7) "测试4"
    ["parent_id"]=>
    int(0)
  }
  [4]=>
  array(3) {
    ["id"]=>
    int(7)
    ["title"]=>
    string(7) "测试5"
    ["parent_id"]=>
    int(0)
  }
}
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值