搜索数组选择值类似

时间:2016-12-24 16:34:34

标签: php arrays

我想用数组搜索到php的预览值类似,但结果没什么

function search($array, $key, $value){
        $results = array();
        if (is_array($array)) {
            if (isset($array[$key]) && $array[$key] == $value) {
                $results[] = $array;
            }
            foreach ($array as $subarray) {
            $results = array_merge($results, search($subarray, $key,$value));
            }
        }
        return $results;
    }    
    $arr = array(0 => array('id'=>1,'title'=>"امروز یکشنبه است",),
                 1 => array('id'=>2,'title'=>"فردا یکشنبه است"),
                 2 => array('id'=>3,'title'=>"دیروز یکشنبه بود"));  
    $matches  = search($arr, 'title', 'یکشنبه');
    foreach($matches as $key=>$_search){
        echo $_search['id'];
    }

结果=没有

3 个答案:

答案 0 :(得分:0)

使用in_array功能如下。

in_array($array,  $string)

in_array的输出是布尔值。

答案 1 :(得分:0)

یکشنبه是标题值的子字符串,但是您进行了相等比较。您应该进行扫描,以查看字符串是否存在于另一个内部。即使用strpos进行比较

strpos($array[$key], $value) > -1

答案 2 :(得分:-1)

function search($array, $key, $value){
        $results = array();
        if (is_array($array)) {
            if (isset($array[$key]) && $array[$key] == strpos($array[$key], $value) > -1) {
                $results[] = $array;
            }
            foreach ($array as $subarray) {
            $results = array_merge($results, search($subarray, $key,$value));
            }
        }
        return $results;
    }    
    $arr = array(0 => array('id'=>1,'title'=>"امروز یکشنبه است",),
                 1 => array('id'=>2,'title'=>"فردا یکشنبه است"),
                 2 => array('id'=>3,'title'=>"دیروز یکشنبه بود"));  
    $matches  = search($arr, 'title', 'یکشنبه');
    foreach($matches as $key=>$_search){
        echo $_search['id'];
    }