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