Quiero buscar con array en php para obtener un valor de vista previa similar pero no resulta nada

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'];
    }

Resultado = nada

0
farhoudi mahdi 24 dic. 2016 a las 19:34

3 respuestas

La mejor respuesta
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'];
    }
-1
user3445955 24 dic. 2016 a las 17:04

Utilice la función in_array de la siguiente manera.

in_array($array,  $string)

La salida de in_array es booleana.

0
Arshid KV 24 dic. 2016 a las 16:45

یکشنبه es una subcadena de tus títulos de título pero haces una comparación de igualdad. En su lugar, debe hacer un análisis para ver si la cadena existe dentro de la otra. Es decir. use strpos para la comparación

strpos($array[$key], $value) > -1
0
Musa 24 dic. 2016 a las 16:47