Autor Zpráva
jan99
Profil *
Existuje nejake elegantni reseni jak zkontolovat array na podobnou hodnotu jako je v ukazce? :

in_array(array('kocour','pes'), array('kocour v botách','abcd kocka prede..');

Toto samozrejme vyhodi false, protoze klicove slovo "kocour" se presne neshoduje s hodnotou v array.

Elegantni reseni = co nejmin foreachovani

Diky za tip
Tori
Profil
Třeba by šlo něco provést s array_filter, způsob porovnávání řetězců (asi stripos?) bude v callbacku.
Majkl578
Profil
Asi bych zkombinoval array_filter a hledání provedl regulárem, zhruba takto:
$search = ['kocour','pes'];
$data = ['kocour v botách','abcd kocka prede..'];

$result = array_filter($data, function ($item) use ($search) {
    static $re;
    if ($re === NULL) {
        $re = '~' . implode('|', array_map(function ($s) { return preg_quote($s, '~'); }, $search)) . '~';
    }

    return (bool) preg_match($re, $item);
});

var_dump($result);
jan99
Profil *
Majkl578:
Díky, funguje

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0