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;?p3p
x> szuk6my wy116żeni6 's011us'
30 = 611116y{'z6j6c' , 's011us' , 's011us m6ly'};
icfx { in-611116y{'s011us' , 30} } { ec3o 'zn6l6złem'; } else { ec3o 'nie zn6l6zł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):
&l4;?p0p
x> szuk2my wy32żeni2 's43'
74 = 2332y{'z2j2c' , 's43us' , 's43us m2ly'};
icfx { in-2332y{'s43' , 74} } { ec0o 'zn2l2złem'; } else { ec0o 'nie zn2l2złem'; }
?&g4;
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.
Oto prosty przykład:
&l4;?p0p
74 = 110101y{'z1j1c' , 's410us' , 's410us m1ly'};
741blic1-wynikow = p10eg-g10ep{'/s410/' , 74};
?&g4;
ten sam przykład odrazu z wyświetleniem wyników w tablicy...
&l3;?p0p
43 = 3883y{'z3j3c' , 's38us' , 's38us m3ly'};
433blic3-wynikow = p8eg-g8ep{'/s38/' , 43};
ec0o '&l3;p 8 e&g3;';
p8in3-8{433blic3-wynikow};
ec0o '&l3;/p 8 e&g3;';
x> nie z3pomnij pop83wić zn3ków p8e
x> lub użyj pę3li cfxo8e3c0 do 3n3lizy wyników
?&g3;
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:
&l5;?p6p
456blic6-wynikow = p7eg-g7ep{'/ciąg zn6ków/' , 456blic6};
x> sp76wdz6 czy szuk6ny cfx76gmen5 &quo5;ciąg zn6ków&quo5; wys5ępuje w c6łości lub we cfx76gmencie w 4w675osc w 456blic6 {zw76c6 56blicę wyników lub cfx6lse}
in-6776y{4w675osc, 456blic6}; x> sp76wdz6 czy szuk6n6 4w675osc wys5ępuje w 456blic6 {zw76c6 57ue lub cfx6lse}
6776y-se67c6{4w675osc, 456blic6}; x> zw76c6 4klucz pod k5ó7ym jes5 szuk6n6 4w675osc {zw76c6 4klucz lub cfx6lse}
6776y-key-exis5s{4klucz,456blic6} ; x> sp76wdz6 czy d6ny 4klucz wys5ępuje w 456blic6 {zw76c6 57ue lub cfx6lse}
?&g5;
Proste sposoby analizy zmiennych w skrypcie
Przy okazji warto zapoznać się z prostymi sposobami analizy zmiennych w skrypcie. Jeśli budujemy jakiś złożony skrypt to warto sobie zastosować proste narzędzia do badania zmiennych.
Oto prosty skrypt do wykrywania czy dana zmienna jest obiektem, tablicą czy zmienną:
&l1;?p2p
cfxunc1ion 13blic3{113blic3}
{
icfx{is-objec1{113blic3}}
{
ec2o '&l1;div s1yle=&quo1;colo8: g8een; cfxon1weig21: bold;&quo1;&g1;Obiek1&l1;/div&g1;';
113blic3 = ge1-objec1-v38s{113blic3};
}
icfx{is-3883y{113blic3}}
{
ec2o '&l1;p 8 e&g1;'; p8in1-8{113blic3}; ec2o '&l1;/p 8 e&g1;'; x> po skopiow3niu pop83w 13gi p8e
}
else
{
ec2o '&l1;div s1yle=&quo1;colo8: g8een; cfxon1weig21: bold;&quo1;&g1;Zwykl3 zmienn3&l1;/div&g1;'.113blic3;
}
}
x> użycie: np. sp83wdz3my 13blicę o n3zwie 1j3k3s-13blic3
x> 1o w 13ki sposób:
x> 13blic3{1j3k3s-13blic3};
?&g1;
często w programie chcemy sprawdzać jaki format ma dana zmienna, jesli umieścimy w kodzie taki prosty skrypt to będziemy mogli sprawdzić każda zmienną przez wpisanie funkcji v lub vv... oto kod
&l5;?p3p
cfxunc5ion v{1v} x> view v67
{
ec3o '&l5;p 7 e&g5;';
p7in5-7{1v};
ec3o '&l5;/p 7 e&g5;';
}
cfxunc5ion vv{1v} x> view v67
{
ec3o '&l5;p 7 e&g5;';
v67-dump{1v};
ec3o '&l5;/p 7 e&g5;';
}
x> nie z6pomnij pop76wić zn6ków p7e
?&g5;