Kształcenie Ustawiczne odpowiedzią na zapotrzebowanie rynku pracy
Transkrypt
Kształcenie Ustawiczne odpowiedzią na zapotrzebowanie rynku pracy
Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 9 dr inż. Jacek Mazurkiewicz e-mail: [email protected] Operacje na tablicach (1) sort – sortowanie alfanumeryczne rosnąco $produkty = array(”Opony”, ”Olej”, ”Świece”); sort($produkty); • porządek: Olej,Opony, Świece • wielkość liter – TAK: duże, małe – A < Z, Z < z $ceny = array(400, 100, 20); sort($ceny); • porządek: 20, 100, 400 asort – sortowanie alfanumeryczne rosnąco wg wartości $ceny = array(”Opony”=>400, ”Olej”=>100, ”Świece”=> 20); asort($ceny); • porządek: według wartości elementu ksort – sortowanie alfanumeryczne rosnąco wg opisów $ceny = array(”Opony”=>400, ”Olej”=>100, ”Świece”=> 20); ksort($ceny); • porządek: według wartości opisów pól (kluczy) rsort, arsort, krsort – sortowanie malejące - analogi sortowanie definiowane przez użytkownika KOD $produkty = array(array(”OPO”, ”Opony”, 400), array(”OLE”, ”Olej”, 100), array(”SWI”, ”Swiece”, 20)); function porownaj($x, $y) { if ($x[0] == $y[0]) return 0; elseif ($x[0] < $y[0]) return –1; else return 1; } usort($produkty, porownaj); CENA function porownaj($x, $y) { if ($x[2] == $y[2]) return 0; elseif ($x[2] < $y[2]) return –1; else return 1; } Operacje na tablicach (2) uasort, uksort – sortowanie wg. użytkownika - analogi sortowanie odwrotne definiowane przez użytkownika $produkty = array(array(”OPO”, ”Opony”, 400), array(”OLE”, ”Olej”, 100), function odporownaj($x, $y) array(”SWI”, ”Swiece”, 20)); { if ($x[2] == $y[2]) CENA return 0; elseif ($x[2] < $y[2]) return 1; usort($produkty, odporownaj); else return -1; } shuffle – losowe ustawienie kolejności elementów array_reverse – kopia tablicy z odwróconą kolejnością <?php $obrazy = array(”opona.jpg”, ”olej.jpg”, ”swieca.jpg”, ”drzwi.jpg”, ”kierownica.jpg”, ”termostat.jpg”, ”uszczelka.jpg”, ”wycieraczka.jpg”, ”tarcza.jpg”); shuffle($obrazy); ?> <html> <head> <title>Części samochodowe</title> </head> <?php <body> $liczby = array(); <center> for ($i = 10; $i > 0; $i--) <h1>Części samochodowe</h1> array_push($liczby, $i); <table width = 100%> $liczby = range(1, 10); <tr> $liczby = array_reverse($liczby); <?php ?> for ($i = 0; $i < 3; $i++) {echo ”<td align = center><img src=\””; echo $obrazy[$i]; echo ”\” width = 100 height = 100></td>”;} ?> </tr> </table> </center> </body> </html> array_push – dodanie elementów na końcu tablicy array_push(nazwa_tablicy, elem_1, elem_2, ...) • co najmniej jeden element jest dodawany array_pop – usunięcie ostatniego elementu tablicy array_pop(nazwa_tablicy) array_unshift – dodanie elementów na początku tablicy array_unshift(nazwa_tablicy, elem_1, elem_2, ...) • co najmniej jeden element jest dodawany array_shift – usunięcie pierwszego elementu tablicy array_shift(nazwa_tablicy) array_merge – konkatenacja tablic array_merge(nazwa_tablicy_1, nazwa_tablicy_2, ...) • co najmniej dwie tablice są łączone array_keys – tablica z nazw kluczy tablicy istniejącej array_keys(nazwa_tablicy) array_values – tablica z wartości tablicy istniejącej array_values(nazwa_tablicy) - ładowanie tablicy z pliku: <?php $zam = file(”order.txt”); $il_zam = count($zam); if ($il_zam == 0) { echo ”<p><strong>Brak zamówień</strong></p>”; } for ($i = 0; $i < $il_zam; $i++) { echo $zam[$i].”<br>”; } ?> • file: ładowanie pliku do tablicy – jedna linia pliku – jeden element tablicy • count: liczba elementów zmiennej • explode(łańcuch separator, łańcuch ciąg) – rozbicie linii na elementy Wędrówki po tablicy reset – pierwszy element, wskaźnik na początku each – bieżący element, przesuw wskaźnika do przodu reset(nazwa_tablicy) each(nazwa_tablicy) next(nazwa_tablicy) current(nazwa_tablicy) prev(nazwa_tablicy) end(nazwa_tablicy) <?php while($element = each($ceny)) { echo $element[”key”]; echo ” – ”; echo $element[”value”]; echo ”<br>”; } ?> next – przesuw wskaźnika do przodu, bieżący element current – bieżący element, wskaźnik bez zmian prev – przesuw wskaźnika do tyłu, bieżący element end – ostatni element, wskaźnik na końcu Dołączanie funkcji do elementów tablicy array_walk – jednolita modyfikacja każdego elementu int array_walk(array tab, string func, [user_data]) function mojdrukuj($wartosc) { echo ”$wartosc<br>”; } array_walk($tablica, ”mojdrukuj”); Mojafunkcja(wartosc, klucz, dane) function MojMnoz(&$wartosc, $klucz, $wsp) { $wartosc *= $wsp; } array_walk($tablica, ”MojMnoz”, 3); • $klucz – tylko dla zachowania składni, merytorycznie zbędny • działanie przez referencję – modyfikacja zawartości tablicy Liczenie elementów tablicy count – liczba elementów w zmiennej – także tablicy sizeof – liczba elementów w tablicy array_count_values – w zasadzie to samo, ale uwaga! count(nazwa_tablicy) sizeof(nazwa_tablicy) array_count_values(nazwa_tablicy) <?php $tablica = array(4,5,1,2,3,1,2,1); $lt = array_count_values($tablica); ?> klucz wartość 4 1 5 1 1 3 2 2 3 1 • oblicza ile niepowtarzalnych wartości jest w tablicy • tablica asocjacyjna: - klucze: pojedyncze wartości, - wartość numeryczna – liczba powtórzeń danej wartości Konwersja tablicy na zmienne skalarne (1) extract – tablica asocjacyjna na wartości skalarne extract(array tab [, int typ_ext [, string przedrostek]) $tablica=array(”kl_1”=>”war_1”, ”kl_2”=>”war_2”, ”kl_3”=>”war_3”); extract($tablica); war_1 war_2 war_3 echo ”$kl_1 $kl_2 $kl_3”; • z tablicy tworzy wartości skalarne o nazwach takich jak klucze tablicy • typ ekstrakcji – co robić w razie kolizji? typ znaczenie EXTR_OVERWRITE nadpisanie EXTR_SKIP ominięcie EXTR_PREFIX_SAME + przedrostek EXTR_PREFIX_ALL + przedrostek Operacje na ciągach znaków $tablica=array(”kl_1”=>”war_1”, ”kl_2”=>”war_2”, ”kl_3”=>”war_3”) extract($tablica, EXTR_PREFIX_ALL, ”MojPR”); echo ”$MojPRkl_1 $MojPRkl_2 $MojPRkl_3”; war_1 war_2 war_3 • klucze i przedrostki muszą spełniać kryteria nazwy zmiennej! trim – przycięcie początku i końca trim(ciąg) ltrim – przycięcie początku ltrim(ciąg) chop – przycięcie końca chop(ciąg) • wycinaniu podlegają: spacje, \n, \r, \t, \v, koniec ciągu \0 Formatowanie przed prezentacją nl2br – \n -> <br> print – jak echo, zwraca boolean printf – jak w C, formatowanie! printf(”Wartość zamówienia wynosi %s”, $wart); // $wart jako string printf(”Wartość zamównienia wynosi %.2f”, $wart); // $wart jako float , 2 miejsca po przecinku printf(”Wartość zamówienia to %.2f (dostawa %.2f)”, $wart, $tr); %[dopełnienie][-][szerokość][.dokładność]typ • znaki konwersji: b – binarny, c – character, d – dziesiętnie, f – float o – ósemkowo, s – string, x – hex (a – f), X – HEX (A – F) Zmiana wielkości znaków strtoupper strlower – NA DUŻE ZNAKI – na małe znaki ucfirst ucwords – Zmiana jak w zdaniu – Każdy Wyraz w Zdaniu • argument – łańcuch znaków, zwraca łańcuch zmodyfikowany explode – rozbicie ciągu wg. separatora, wynik w tablicy array explode(string separator, string łańcuch) implode – działanie odwrotne do explode string implode(string separator, tablica) $tab_email = explode(”@”, $email); $email = implode(”@”, $tab_email); strtok – pobranie żetonów z ciągu string strtok(string łańcuch, string separator) $zeton = strtok($komentarz, ” ”); // pierwsze wywołanie echo $zeton.”<br>”; while ($zeton != ””) { $zeton = strtok(” ”); // kolejne wywołania – tylko separator echo $zeton.”<br>”; } • dwa separatory obok siebie, jeden równy 0 – pusty łańcuch substr – dostęp do podciągu między początek a koniec string substr(string łańcuch, int start, [int długość]) $IchTroje = ”Keine Grenzen”; substr($IchTroje, 1); // substr($IchTroje, -6); // substr($IchTroje, 0, 5); // substr($IchTroje, 1, -8); // eine Grenzen Grenzen Keine eine Porównywanie ciągów strcmp – porównanie ciągów int strcmp(string ciąg_1, string ciąg_2) • ciągi równe zwraca zero, ciąg_1 za ciąg_2 zwraca >0, ciąg_1 przed ciąg_2 zwraca <0, wielkość liter ważna! strcasecmp – porównanie ciągów int strcasecmp(string ciąg_1, string ciąg_2) • działa jak srtcmp, wielkość liter nie jest ważna! strnatcmp – porównanie ciągów „naturalne” int strnatcmp(string ciąg_1, string ciąg_2) • działa jak srtcmp, naturalność: 2 < 12 Znajdowanie ciągów w ciągach strstr, strchr – odnajdywanie ciągu w ciągu string strstr(string stóg, string igła) • jeśli znajdzie się ciąg pasujący do igła zwraca fragment stóg od igła jeśli nie odnajdzie – false, znajdzie tylko pierwsze wystąpienie igły stristr – odnajdywanie ciągu w ciągu string stristr(string stóg, string igła) • działa jak srtstr, wielkość liter nie jest ważna! strrchr – odnajdywanie ciągu w ciągu string strrchr(string stóg, string igła) • jeśli znajdzie się ciąg pasujący do igła zwraca fragment stóg od igła jeśli nie odnajdzie – false, znajdzie tylko ostatnie wystąpienie igły Znajdowanie pozycji podciągu strpos – odnajdywanie ciągu w ciągu int strpos(string stóg, string igła, [int offset]) • zwraca pozycję pierwszego wystąpienia igła w stóg, liczenie od zera, offset może wskazać początek poszukiwania strrpos – odnajdywanie ciągu w ciągu string strrpos(string stóg, string igła) • zwraca pozycję ostatniego wystąpienia igła w stóg, liczenie od zera, offset może wskazać początek poszukiwania, igła = jeden znak strlen – sprawdzenie długości ciągu int strlen(string łańcuch) • zwraca długość łańcucha znaków Zamiana podciągów str_replace – zamiana wszystkich elementów na nowe string str_replace(string igła, string new_igła, string stóg) • zamienia wszystkie elementy igła znalezione w stog na new_igła substr_replace – zamiana konkretnego podciągu ciągu string substr_replace(string cg, string zam, int str [,int dl]) • zamienia część ciągu cg na ciąg zam, str i dl określają, które części zostaną podmienione • str – początek szukania, dodatnia – od początku ciągu, ujemna – od końca • dl określenie końca poszukiwania, jeśli go brak zamiana od str do końca • dl = 0 - wstawienie ciągu bez nadpisywania • dl > 0 - liczba znaków, które mają być zamienione na nowy ciąg • dl < 0 - pozycja ciągu, na której zakończyć zamianę, liczona od końca