php数组搜索

/**
 * 多维数组查询
 * @param  array  $searchArr 需要查询的值
 * @param  array  $data      需要查询的数组
 * @return array             查询值所在数组
 */
function searchArr(array $searchArr, array $data)
{
    $str = json_encode($data);
    $r = array();
    foreach ($searchArr as $key => $val) {
        $val = json_encode($val);
        $val = str_replace("\\", "\\\\", $val);
        $pattern = "/{[^{]*?\"{$key}\":{$val}[^}]*?}/";
        preg_match($pattern, $str, $regs);
        if(!empty($regs)){
            $r[] = json_decode($regs[0], true);
        }
    }
    return $r;
}

// 使用
$data = array(
    array(
        'age' => 12,
        'name' => '小刚',
    ),
    array(
        'age' => 14,
        'name' => '小红',
    ),
    array(
        'age' => 33,
        'name' => '小明',
    ),
    array(
        'age' => 22,
        'name' => '小花',
    ),
);

$r = searchArr(array('name'=>'小花'), $data);
print_r($r);
// result
Array
(
    [0] => Array
        (
            [age] => 22
            [name] => 小花
        )

)

Comments are closed.