페이지 정보

작성자 루미집사 댓글 0건 조회 2,307회 작성일 21-11-25 01:13

PHP 다차원 배열 LIKE 검색

본문

PHP 다차원 배열 LIKE 검색하기.

function sMatch($search, $subject) {
        $search = str_replace('/', '\\/', $search);
    
        return preg_match("/$search/i", (string)$subject);
    }
    
    function like_search_r($array, $key, $value, array &$results = []) {
        if (!is_array($array)) {
            return;
        }
    
        $key   = (string)$key;
        $value = (string)$value;
    
        foreach ($array as $arrayKey => $arrayValue) {
            if (sMatch($key, $arrayKey) && sMatch($value, $arrayValue)) {
                // add array if we have a match
                $results[] = $array;
            }
    
            if (is_array($arrayValue)) {
                // only do recursion on arrays
                like_search_r($arrayValue, $key, $value, $results);
            }
        }
    }
    $array1 = [
        'foo'    => 'bar',
        'subarr' => [
            'test'                 => 'val',
            'dangerous/characters' => 1,
        ],
    ];
    
    $results1 = [];
    like_search_r($array1, 'fo', 'bar', $results1);
    print_r($results1);
    
    /*
    Array
    (
        [0] => Array
            (
                [foo] => bar
                [subarr] => Array
                    (
                        [test] => val
                        [dangerous/characters] => 1
                    )
    
            )
    
    )
    */
    
    $results2 = [];
    like_search_r($array1, 'est', 'val', $results2);
    print_r($results2);
    
    /*
    Array
    (
        [0] => Array
            (
                [test] => val
                [dangerous/characters] => 1
            )
    
    )
    */
    
    $results3 = [];
    like_search_r($array1, 's/c', 1, $results3);
    print_r($results3);
    
    /*
    Array
    (
        [0] => Array
            (
                [test] => val
                [dangerous/characters] => 1
            )
    
    )
    */
    

 

댓글목록

등록된 댓글이 없습니다.