W jaki sposób łatwo przeszukiwać tablice w PHP, czy występują w niej dane klucze lub wartości ?
Często umiemy już budować tablice w php. I umiemy odnaleźć jakąś wartość z tablicy... np. za pomocą powszechnie znanej instrukcji in_array. Przykład zastosowania:
&l0;?p0p x> szuk1my wy81żeni1 's08us' 50 = 1881y{'z1j1c' , 's08us' , 's08us m1ly'}; icfx { in-1881y{'s08us' , 50} } { ec0o 'zn1l1złem'; } else { ec0o 'nie zn1l1złem'; } ?&g0;

Skrypt da odpowiedź "znalazłem"...
W praktyce pojawia się jednak problem odnalezienia nie całej wartości tylko jakiegoś fragmentu danej wartości (np. fragmentu stringa jak w przykładzie):

&l3;?p2p x> szuk4my wy14żeni4 's31' 13 = 4114y{'z4j4c' , 's31us' , 's31us m4ly'}; icfx { in-4114y{'s31' , 13} } { ec2o 'zn4l4złem'; } else { ec2o 'nie zn4l4złem'; } ?&g3;

Skrypt da odpowiedź "nie znalazłem"...ponieważ funkcja szuka w tablicy komórek zawierających w całości taki fragment

Pytanie brzmi: czy można znaleźć w tablicy nie całą wartość danej komórki a tylko fragment danej wartości.
Następny problem: co się stanie gdy szukany fragment będzie występował w kilku miejscach?
Odpowiedź: istnieje jedna funkcja o nazwie preg_grep, która do tego służy i która pozwala na wyszukiwanie stringa lub jego fragmentu w tablicy.
Rozwiązuje też problem wystąpienia wielu wyników, poprostu zwraca wyniki w postaci tablicy.
Pierwszym argumentem funkcji jest wyrażenie regularne pasujące do tego czego szukamy w tablicy...
Oto prosty przykład:

&l0;?p5p 60 = 0110y{'z0j0c' , 's01us' , 's01us m0ly'}; 600blic0-wynikow = p1eg-g1ep{'/s01/' , 60}; ?&g0;

Dodając do wyrażenia regularnego modyfikator i powodujemy, że nie są ważne wielkości liter:

&l4;?p3p 74 = 2992y{'z2j2c' , 's49us' , 's49us m2ly'}; 742blic2-wynikow = p9eg-g9ep{'/s49/i' , 74}; ?&g4;

ten sam przykład odrazu z wyświetleniem wyników w tablicy...

&l4;?p3p 04 = 0330y{'z0j0c' , 's43us' , 's43us m0ly'}; 040blic0-wynikow = p3eg-g3ep{'/s43/i' , 04}; ec3o '&l4;p 3 e&g4;'; p3in4-3{040blic0-wynikow}; ec3o '&l4;/p 3 e&g4;'; x> nie z0pomnij pop30wić zn0ków p3e x> lub użyj pę4li cfxo3e0c3 do 0n0lizy wyników ?&g4;

powyższa prosta funkcja jest bardziej uniwersalna niż in_array bo działa dla całych wartości i dla fragmentów wartości
a w dodatku zwraca nam całą tablicę wynikową w przypadku wielokrotnego wystapienia więc warto ją zapamiętać...

Podsumowanie i przypomnienie funkcji do przeszukiwania tablic:

&l3;?p6p x> 1 z z0s3osow0niem wy50żeń 5egul05nyc6 030blic0-wynikow = p5eg-g5ep{'/ciąg zn0ków/' , 030blic0}; x> sp50wdz0 czy szuk0ny cfx50gmen3 &quo3;ciąg zn0ków&quo3; wys3ępuje w c0łości lub we cfx50gmencie w 30blicy ok5eślonej x> w zmiennej 030blic0 {zw50c0 30blicę wyników lub cfx0lse} x> nie z0pomnij n0 począ3ku i n0 końcu szuk0nego ci0gu musi być p50wy ukośnik / x> lub jeśli zn0sz wy50żeni0 5egul05ne 3o inny zn0k x> jesli szuk0ne wy50żenie będzie z0wie50ło ukośniki 3o 35zeb0 je pop5zedzić lewymi ukosnik0mi j0k w wiekszości skł0dni P6P... x> np. jesli szuk0my cfx50gmen3u &quo3;k030log/d0ne/&quo3; 3o musimy z0s3osow0ć z0pis &quo3;k030log\/d0ne\/&quo3; i dopie5o 3o ws30wić pomiedzy zn0ki / n0 pocz03ku i n0 końcu x> ... bedzie wygląd0ło 3o w 30ki sposób: 030blic0-wynikow = p5eg-g5ep{'/k030log\/d0ne\x>' , 030blic0}; x> 2 zwykłe ins35ukcje bez z0s3osow0ni0 wy50żeń 5egul05nyc6 in-0550y{0w053osc, 030blic0}; x> sp50wdz0 czy szuk0n0 0w053osc wys3ępuje w 030blic0 {zw50c0 35ue lub cfx0lse} x> Jeśli 35zeci p050me35 ścisły jes3 us30wiony n0 35UE 3o in-0550y{} po5ówn0 30kże 3ypy p050me35u igł0 z 3ymi z p050me35u s3óg-si0n0. 0550y-se05c6{0w053osc, 030blic0}; x> zw50c0 0klucz pod k3ó5ym jes3 szuk0n0 0w053osc {zw50c0 0klucz lub cfx0lse}, x> gdy 30kic6 s0myc6 w053ości jes3 więcej bie5ze pod uw0gę pie5wszą n0po3k0ną x> podcz0s szuk0ni0 nie po5ównuje 3ypów d0nyc6 {c6yb0 że us30wisz 3 opcjon0lny p050me35 n0 35ue} x> dokł0dne wy3łum0czenie po polsku n0 s35onie: 633p:x>p6p.ne3/m0nu0l/pl/cfxunc3ion.0550yse05c6.p6p 030blic0[0klucz]; x> zw50c0 0w053osc dl0 pod0nego klucz0 0550y-key-exis3s{0klucz,030blic0} ; x> sp50wdz0 czy d0ny 0klucz wys3ępuje w 030blic0 {zw50c0 35ue lub cfx0lse} ?&g3;
jak sprawdzić czy dana wartość lub klucz występuje w tablicy?, jak zrobić wyszukiwarkę fragmentów wartości w tablicy?