Wykład
This presentation is the property of its rightful owner.
Sponsored Links
1 / 38

Wykład 5 PowerPoint PPT Presentation


  • 72 Views
  • Uploaded on
  • Presentation posted in: General

Wykład 5. Technologie internetowe. PHP Pliki Cookie Funkcje daty i czasu Tablice. Korzystanie z systemu plików (pliki na serwerze!)

Download Presentation

Wykład 5

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Wyk ad 5

Wykład5

Technologie internetowe

  • PHP

    • Pliki

    • Cookie

    • Funkcje daty i czasu

    • Tablice


Wyk ad 5

Korzystanie z systemu plików (pliki na serwerze!)

Do otwierania plików służy funkcja fopen(nazwa_pliku,tryb). Nazwa pliku to pełna ścieżka do pliku, który tworzymy lub otwieramy, mode określa tryb działania funkcji. Funkcja zwraca wskaźnik pliku (służy jako odnośnik i dostarcza informacji o pliku).

Parametr tryb przyjmuje jedną z następujących wartości:


Wyk ad 5

1. Sprawdzanie czy plik istnieje file_exists("plik.php")

2. Tworzenie nowego pliku

fopen("c:/moje dane/plik.txt","w+"); - jeśli nie podamy trybu plik będzie otwarty do odczytu

3. Zapis do pliku

$file = @fopen($plik, "w+") – tworzy wskaźnik pliku (zmienną plikową)

fwrite($file, $tekst); //zapis

lub

fputs ($file, $tekst, $dlugosc); //zapis

fclose($file);

UWAGA: dla przeczytanych tekstów stosuje się funkcję trim obcinającą białe znaki (spacje, zmiany wiersza itp.)


Wyk ad 5

4. Odczytywanie danych z pliku

$file = fopen($plik, "r");

$msg = fread($file, filesize($plik)); - czyta od początku do końca pliku

lub

$msg = fgets($file, filesize($plik)); //odczyt

fclose($file);

echo $msg;

Można podawać liczbę znaków do odczytania

  • lub

    • $msg = file('adres/nazwa_pliku');

    • echo $msg[1];

    • echo $msg[2];

  • itd. (nie trzeba fopen)


Wyk ad 5

Szczegółowo:

$linia = fgets(zmienna_plikowa, [długość]) – odczyt linii z otwartego pliku (do znaku \n lub EOF)

fputs(zmienna_plikowa, zawartość, [długość]) – zapis do otwartego pliku

fseek(zmienna_plikowa, pozycja) – ustawia wskaźnik pliku w punkcie pozycja bajtów

ftell(zmienna_plikowa) – informuje na jakiej pozycji (bajt) jest ustawiony wskaźnik

rewind(zmienna_plikowa) – ustawia wskaźnik na początku pliku

readfile(nazwa_pliku) – otwiera plik, wyświetla plik w oknie przeglądarki i zamyka plik

$tabpliku =file(nazwa_pliku) – wpisuje zawartość całego pliku do tablicy, każda linia stanowi osobny element tablicy

feof((zmienna_plikowa) - sprawdza osiągnięcie końca pliku, przyjmuje wartość true jeśli został osiągnięty koniec pliku


Wyk ad 5

Dokładniej…

$uchwyt= fopen("sciezka/nazwa" ,"r")

string fgets ( resource $uchwyt [, int długość])

Zwraca łańcuch o (długości – 1) bajtów odczytany z pliku wskazanego przez uchwyt. Czytanie kończy się kiedy przeczytano (długość – 1) bajtów lub gdy wystąpi znak nowego wiersza (jest on dołączany do zwracanego wyniku) lub gdy wystąpi znak końca pliku EOF (którykolwiek przypadek zdarzy się pierwszy). Jeśli nie została określona długość, domyślnie przyjmuje 1k (1024 bajty).


Wyk ad 5

6. Kopiowanie plików

$stary = "c:/moje dane/plik.php";

$nowy = "nowyplik.php";

copy($stary, $nowy);

7. Zmiana nazwy pliku

$stary = "stara nazwa.php";

$nowy = "nowa nazwa.php";

rename($stary, $nowy);

8. Usuwanie plików

unlink("nowyplik.php");


Wyk ad 5

Przykłady:

$linia=fgets($plik, 4096);

Pobiera do zmiennej $linia wiersz o długości nie większej niż 4096 znaków

fputs ($plik, "tekst");

Spowoduje zapisanie tekstu „tekst" do otwartego pliku i odpowiednie przesunięcie się wskaźnika zapisu.

<?php

$plik=fopen (" dane.txt ", "r ");

while ( !feof($plik) )

{

$linia= fgets($plik, 255);

echo $linia;

}

fclose($plik);

?>


Wyk ad 5

flock(zmienna_plikowa, działanie) - blokowanie pliku wywoływana po otwarciu, ale przed odczytem czy zapisem (pozwala na przeciwdziałanie równoczesnemu dostępowi do plików przez wielu użytkowników)

mkdir("ścieżka/katalog"), rmdir("ścieżka/katalog")

$kat = opendir("ścieżka/katalog") – otwarcie katalogu do odczytu zawartości

$nazwa = readdir($kat) – czytanie nazwy pliku z zawartości katalogu (1 wpis), f. przyjmuje wartośc false jeśli wszystkie wpisy zostaną odczytane. Wpisy nie są uporządkowane.

closedir($kat) – zamknięcie katalogu po zakończeniu czytania


Wyk ad 5

Przykład: Wyświetlenie zawartości katalogu w postaci listy

<?php

$nazwa_kat = 'C:\usr\krasnal\www\htdocs';

$kat = opendir($nazwa_kat); //otwarcie do czytania

$lista_plikow = "<ul>"; //pocz listy

while ($naz_pliku = readdir($kat)) //war. zakończenia

if (($naz_pliku !=".")&&($naz_pliku !="..")) //filtr

$lista_plikow .= "<li>$naz_pliku"; //dopisanie

$lista_plikow .= "</ul>"; //koniec listy

closedir($kat); //zamkniecie

?>

<P>Elementy w katalogu: <?php echo "$nazwa_kat"; ?></p>

<?php echo $lista_plikow; ?>


Wyk ad 5

Przykład: licznik odwiedzin na stronie

<?php

if(!file_exists("licznik.txt"))

{ //jeśli nie istnieje

$plicznik=fopen("licznik.txt","w+"); //to jest tworzony

fputs($plicznik, "0"); // wpisujemy "0"

fclose($plicznik);

}

$plicznik=fopen("licznik.txt","r+"); //otwarcie "RW"

flock($plicznik,2);

$liczba=fgets($plicznik,10); //pobranie ilości odwiedzin

echo ("<strong>Liczba odwiedzin: $liczba </strong>");

$liczba++;//zwiększenie ilości o 1

fseek($plicznik,"0");//wskaźnik na początek

fputs($plicznik, $liczba);//wpisanie liczby do pliku

flock($plicznik,3);

fclose($plicznik);

?>


Wyk ad 5

flock(zmienna_plikowa, działanie) - blokowanie pliku wywoływana po otwarciu, ale przed odczytem czy zapisem (pozwala na przeciwdziałanie równoczesnemu dostępowi do plików przez wielu użytkowników)

mkdir("ścieżka/katalog"), rmdir("ścieżka/katalog")

$kat = opendir("ścieżka/katalog") – otwarcie katalogu do odczytu zawartości

$nazwa = readdir($kat) – czytanie nazwy pliku z zawartości katalogu (kolejny wpis), funkcja przyjmuje wartość false jeśli wszystkie wpisy zostaną odczytane. Wpisy nie są uporządkowane.

closedir($kat) – zamknięcie katalogu po zakończeniu czytania


Wyk ad 5

setcookie

(PHP 3, PHP 4 , PHP 5)

setcookie -- Wysyła ciasteczko i zapisuje u klienta

Opis

setcookie ( string nazwa [, string wartość] [, int data_ważności ])

setcookie() określa ciasteczko (ang. cookie) do wysłania z nagłówkami HTTP. Ciasteczko musi być wysłane zanim jakiekolwiek inne nagłówki zostaną wysłane (to jest ograniczenie ciasteczek, nie PHP). To wymaga umieszczenia wywołań tej funkcji przed znacznikami <html> czy <head>.

Wszystkie argumenty poza nazwą są opcjonalne.

Jeśli obecny jest tylko argument nazwa, ciasteczko o takiej nazwie zostanie usunięte z klienta.

Można też opuścić argumenty za pomocą pustego łańcucha ("").

Argument data_ważności jest liczbą całkowitą. Można uzyć liczby zero (0). Argument data_ważności jest regularnym uniksowym znacznikiem czasu, takim jak zwracany przez funkcje time() lub mktime ().

Wysłane ciasteczko jest dostępne już przy następnym załadowaniu strony w tablicy $_COOKIE. W PHP do 4.1.0 była to tablica $HTTP_COOKIE_VARS.

CIASTECZKA „cookies”


Wyk ad 5

Częste pułapki:

Tworzone skryptem ciasteczka nie będą widziane do następnego przeładowania strony dla której mają być widoczne.

Ciasteczko może być usunięte tylko z tymi parametrami, z jakimi je ustawiono.

Można wielokrotnie wywołać setcookie() - wykonywane są we właściwej kolejności.

Przykład 1. setcookie() wysyła przykładowe ciasteczka

setcookie ("TestCookie", $value);setcookie ("TestCookie", $value,time()+3600);  /* traci ważność za godzinę */

Aby skasować ciasteczko, należy ustawić datę ważności na datę z przeszłości

Przykład 2. Kasowanie ciasteczek// np. ustawić datę ważności na godzinę wsteczsetcookie ("TestCookie", "", time() - 3600);

Przykład 3. Sprawdzenie ciasteczkaif (isset($_COOKIE["TestCookie"]))

kod1;

else kod2;


Wyk ad 5

<?php

if (isset($licznik))

$licznik++;

else $licznik = 1;

setcookie("licznik",$licznik,time()+(3600*24*31));

// ciasteczko będzie utrzymywane na komputerze

// oglądającego stronę

// przez miesiąc od ostatnich odwiedzin

echo ("Odwiedziłeś tę stronę $licznik razy<br>");

echo"<br>";

var_dump($_COOKIE);//informacja o tablicy _COOKIE

?>


Wyk ad 5

LICZNIK odporny na odświeżanie (plik i cookie)

<?php

if (!file_exists("licznik.txt")) // jeżeli plik licznik.txt nie istnieje

{$licznik=fopen("licznik.txt","w"); // tworzymy go

}

else // w innym wypadku

{ // otwieramy go i odczytujemy liczbę odwiedzin

$licznik=fopen("licznik.txt","r+");

}

$numer=fgets($licznik,4096); // pobieramy pierwszą linijkę

if ($numer=='') // przy pierwszym uruchomieniu plik będzie pusty

$numer=0; // pierwsza wizyta

// jeżeli użytkownik nie ma ciasteczka lub odwiedzał stronę przed godziną

if (!isset($_COOKIE["CLicznik"]))

{ rewind ($licznik); // cofamy pozycję zapisu w pliku na początek

$numer++; // zwiększamy liczbę odwiedzin o 1

fwrite($licznik,$numer); // zapisujemy liczbę w pliku

fclose($licznik);// zamykamy plik

// zapisujemy ciasteczko na komputerze użytkownika

setcookie("CLicznik","Ustawione ciasteczko",time()+3600);

}

// wyświetlamy odpowiedni tekst

echo "Witam, jesteś ". $numer. "gościem na mojej stronie !!!";

?>

Uwaga: gdzie są ciasteczka (Explorer, Opera – inne przeglądarki)

Nie jest istotna wartość ciasteczka


Wyk ad 5

Funkcje czasu

time

Zwraca aktualny uniksowy znacznik czasu

Opis

int time ( )Zwraca aktualny czas, podawany jako liczba sekund, które upłynęły od uniksowej Epoki (1 stycznia 1970 00:00:00 GMT).


Wyk ad 5

date

Formatuje lokalny czas/datę według zadanego formatu

Opis

string date ( string format [, int znacznik_czasu])Zwraca datę sformatowaną według szablonu podanego w argumencie format. Żądana data określona jest w argumencie znacznik_czasu, a w przypadku jego braku pobierany jest aktualny czas.

Uwaga: Poprawny zakres znacznika czasu to zwykle od piątku, 13 grudnia 1901 20:45:54 GMT (czasu Greenwich) do wtorku, 19 stycznia 2038 03:14:07 GMT. (Wartości te odpowiadają minimalnej i maksymalnej wartości 32-bitowej liczbie całkowitej ze znakiem). W systemie Windows zakres ten jest bardziej ograniczony i zawiera się w przedziale 01-01-1970 do 19-01-2038.

Niektóre systemy baz danych mają funkcje konwersji ich formatów daty w uniksowy znacznik czasu (jak np. funkcja UNIX_TIMESTAMP w MySQL-u).


Wyk ad 5

Poniższych znaków używa się w szablonie formatującym datę:

d - dzień miesiąca, 2 cyfry z zerem na początku; tzn. od "01" do "31"

D - dzień tygodnia, tekst, 3 litery; n.p. "Fri"

F - miesiąc, tekst, pełna nazwa; n.p. "January"

h - godzina, format 12-godzinny z zerem na początku; tzn. od "01" do "12" //g

H - godzina, format 24-godzinny z zerem na początku; tzn. od "00" do "23" //G

i - minuty; tzn. od "00" do "59"

j - dzień miesiąca bez zera na początku; tzn. od "1" do "31"

l (mała litera 'L') - dzień tygodnia, tekst, pełna nazwa; n.p. "Friday"

m - miesiąc; tzn. "01" to "12"

M – skrót nazwy miesiąca (ang.)

n - miesiąc bez zera na początku; tzn. "1" to "12"

r - data sformatowana według RFC 822; n.p. "Thu, 21 Oct 2004 12:01:07 +0100" (dodane w PHP 4.0.4)

s - sekundy; i.e. "00" to "59"

w - dzień tygodnia, liczbowy, tzn. od "0" (Niedziela) do "6" (Sobota)

W - numer tygodnia w roku według ISO-8601, tydzień zaczyna się w poniedziałek (dodane w PHP 4.1.0)

Y - rok, 4 liczby; n.p. "1999" //y

z - dzień roku; tzn. od "0" do "365"

Nierozpoznane znaki w szablonie formatującym będą wyświetlone tak jak są.


Wyk ad 5

Przykład 1. przykłady użycia date()

echo date ("l dS of F Y h:i:s A");

echo "July 1, 2000 is on a " . date ("l", mktime(0,0,0,7,1,2000));

Jeśli nie chcemy, aby któryś z rozpoznawalnych w szablonie znaków został zastąpiony odpowiadającą mu częścią daty, musimy poprzedzić go znakiem odwrotnego ukośnika (backslash).

Przykład 2. zastosowania date()

/* Dzisiaj jest March 10th, 2001, 5:16:18 pm */

$today = date("F j, Y, g:i a");                // March 10, 2009, 5:16 pm

$today = date("m.d.y");                        // 03.10.01

$today = date("j, n, Y");                      // 10, 3, 2009

$today = date("Y-m-d");                          // 2009-03-10

$today = date('h-i-s, j-m-y, it is w Day z ');  // 05-16-17, 10-03-01, 1631 1618 6 Fripm01

$today = date('\i\t \i\s \t\h\e jS \d\a\y.');  // It is the 10th day.

$today = date("D M j G:i:s T Y");              // Sat Mar 10 15:16:08 MST 2009

$today = date('H:m:s \m \i\s\ \m\o\n\t\h');    // 17:03:17 m is month

$today = date("H:i:s");                        // 17:16:17


Wyk ad 5

mktime

mktime oblicza uniksowy znacznik czasu dla podanej daty

Znacznik czasu jest liczbą całkowitą długą (long integer) zawierającą liczbę sekund dzielącą uniksową Epokę (1 stycznia 1970) od podanego w argumentach czasu.

Opis

int mktime ( int godzina, int minuta, int sekunda, int miesiąc, int dzień, int rok [, int letni/zimowy])Uwaga: Proszę zwrócić uwagę na kolejność argumentów !!!,

która w dodatku nie jest praktyczna przy opuszczaniu argumentów od prawej do lewej (patrz niżej). Częstym błędem w skryptach są pomyłki w kolejności tych argumentów.

Argumenty mogą być opuszczane w kolejności od prawej do lewej. Za każdy pominięty argument będzie wówczas wstawiona aktualna wartość, zgodnie z lokalnym czasem/datą.

Argument letni/zimowy może być ustawiony na 1, jeśli to czas zimowy, lub 0 jeśli letni, lub -1 (domyślnie) jeśli niewiadomo, czy letni czy zimowy. Jeśli nie jest to wiadome, PHP spróbuje ustalić samodzielnie.


Wyk ad 5

Funkcja mktime() przydaje się przy wykonywaniu arytmetyki dat i walidacji, gdyż automatycznie policzy właściwą wartość dla danych spoza przedziałów. Na przykład, każda poniższa linia wyświetli "Jan-01-1998".

Przykład 1. przykład mktime()

<?phpecho date ("M-d-Y", mktime (0,0,0,12,32,1997));echo date ("M-d-Y", mktime (0,0,0,13,1,1997));echo date ("M-d-Y", mktime (0,0,0,1,1,1998));echo date ("M-d-Y", mktime (0,0,0,1,1,98));

?>

rok może być liczbą dwu lub czterocyfrową, przy czym wartości dwucyfrowe z przedziału 0-69 będą mapowane do 2000-2069, a z przedziału 70-99 do 1970-1999 (w systemach, w których time_t jest 32-bitową liczbą całkowitą ze znakiem, co jest obecnie najpopularniejszym rozwiązaniem, poprawny zakres argumentu rok zawiera się pomiędzy 1902 a 2037).

Windows: Żadna znana wersja systemu Windows nie obsługuje ujemnych znaczników czasu. Z tego powodu zakres poprawnych dat zawiera się pomiędzy rokiem 1970 a 2038.

Ostatni dzień dowolnego miesiąca może być wyrażony jako zerowy dzień następnego miesiąca, ale nie jako -1 dzień. Obydwa poniższe przykłady wyświetlą "Ostatni dzień lutego 2000 to: 29"


Wyk ad 5

Można też używać funkcji strftime

Przykład. Ostatni dzień miesiąca

<?php

$ostatni = mktime (0,0,0,3,0,2010);

echo strftime ("Ostatni dzień lutego 2010 to: %d", $ostatni);    

$ostatni = mktime (0,0,0,4,-31,2010);

echo strftime ("Ostatni dzień lutego 2010 to: %d", $ostatni);

?>


Wyk ad 5

Przykłady zastosowania date() i mktime()

$jutro = mktime (0,0,0,date("m")  ,date("d")+1,date("Y"));

$poprzedni_miesiac = mktime (0,0,0,date("m")-1,date("d"),  date("Y"));

$nastepny_rok    = mktime (0,0,0,date("m"),  date("d"),  date("Y")+1);

Notatka: Rozwiązanie to jest bardziej godne zaufania od dodawania lub odejmowania określonej liczby sekund, chociażby z powodu zmiany czasu.


Wyk ad 5

Tablice


Wyk ad 5

Wartości przechowywane w tablicy nazywane są elementami tablicy. Każdy z elementów tablicy posiada indeks (klucz) umożliwiający dostęp do niego.

PHP obsługuje tablice indeksowane numerycznie, jak i asocjacyjne.

Tablice indeksowane numerycznie stosowane są w większości języków programowania. W PHP indeks numeryczny zaczyna się od wartości "0".

Tablice asocjacyjne stosowane w PHP jako wskaźnika używają najczęściej łańcucha znaków.

Tablica to zmienna, która przechowuje zbiór lub sekwencję wartości. Tablica może posiadać wiele elementów, a każdy z nich może przechowywać pojedynczą zmienną, taką jak tekst bądź liczby, lub też inną zmienną. Tablice zawierające w sobie inne tablice są nazywane wielowymiarowymi.

0

1

2

indeksy

Produkty


Wyk ad 5

Tablice indeksowane numerycznie

Tworzenie tablicy:

$produkty[0] = "Ksiazki";

$produkty[1] = "Filmy VHS";

$produkty[2] = "Filmy DVD";

Albo konstrukcja array:

$produkty = array("Ksiazki","Filmy VHS","Filmy DVD");

$produkty1 = array(1=>"Ksiazki","Filmy VHS","Filmy DVD"); //zmiana indeksu startowego

$produkty2 = array(1=>"Ksiazki",3=>"Filmy VHS",5=>"Filmy DVD"); // „tablica rzadka"

Dostęp do elementów tablicy:

echo $produkty[1];

for ($i = 0; $i<3; $i++)

echo $produkty[$i];


Wyk ad 5

Tabliceasocjacyjne

Tworzenie tablicy:

$ceny = array("Biblia PHP"=>123, "Faraon"=>89, "Atlas świata"=>243);

przykład tworzy tablicę w której nazwy produktów są kluczami, a ceny wartościami.

$ceny["Pan Tadeusz"] = 149;

Dostęp do elementów tablicy:

echo $ceny["Pan Tadeusz"];

while ($el = each($ceny)){

echo $el["key"];

echo " - ";

echo $el["value"];

echo "<br>";}

funkcja each() zwraca bieżący element tablicy i przechodzi do następnego

$el jest tablicą o 4 elementach:

"key" i 0 – zawierają klucz bieżącego elementu tablicy $ceny

"value" i 1 – zawierają wartość bieżącego elementu tablicy $ceny

$el


Wyk ad 5

Instrukcjalist()

Przypisywanie elementów tablicy do zmiennych

Podobnie jak array(), nie jest funkcją, ale elementem składni języka. Instrukcjalist() jest używana do przypisywania listy zmiennych w jednej operacji.

Uwaga: list() działa tylko z tablicami o indeksach liczbowych zakładając że indeksy zaczynają się od 0.

Przyklad

$ceny = array("Biblia PHP"=>123, "Faraon"=>89, "Atlas świata"=>243);

list($a,$b,$c,)= each($ceny);

echo $a;


Wyk ad 5

Tablice heterogeniczne – wartości przechowywane w tablicy mogą być różnych typów.

$mieszana = array("mały piesek", 63, 4.25, false);

var_dump($mieszana);

var_dump(tablica) wyświetla zawartość i typ zmiennej, dodając odstępy

albo

print_r (tablica)

Tablice wielowymiarowe

Elementy tablic mogą przechowywać inne tablice -> w ten sposób można utworzyć tablicę dwuwymiarową traktowaną jak macierz

Tak zdefiniowana tablica składa się z trzech wektorów


Wyk ad 5

Tworzenie tablicy dwuwymiarowej:

a) indeksowanej numerycznie

$prod = array(array ("PHP", "Biblia PHP", 123),

array("FAR", "Faraon", 89),

array("ASW", "Atlas świata", 243) );

Dostęp do elementów tablicy:

echo $prod[0][1];//itd

lub:

for( $rzad=0; $rzad<3; $rzad++)

{

for( $kol=0; $kol<3; $kol++)

echo " | ".$prod[$rzad][$kol];

echo "<br>";

}


Wyk ad 5

a) asocjacyjnej

$prod = array( array ("Kod"=>"PHP",

"Nazwa"=>"Biblia PHP",

"Cena"=>123),

array("Kod"=>"FAR",

"Nazwa"=>"Faraon",

"Cena"=>89),

array("Kod"=>"ASW",

"Nazwa"=>"Atlas świata",

"Cena"=>243) );

Dostęp do elementów tablicy:

echo $prod[0]["Nazwa"];//itd

lub:

for( $rzad=0; $rzad<3; $rzad++)

echo " | ".$prod[$rzad]["Kod"].

" | ".$prod[$rzad]["Nazwa"].

" | ".$prod[$rzad]["Cena"]." |<br>";


Wyk ad 5

Sortowanie tablic

Funkcja sort()

$produkty = array("Książki","Filmy VHS","Filmy DVD", "filmy DVD", "Plyty CD", Plyty VCD");

for($i=0; $i<6; $i++)

echo $produkty[$i]."<br>";

echo "Oto produkty:<br>";

sort($produkty);

echo "Oto sortowane produkty:<br>";

for($i=0; $i<5; $i++)

echo $produkty[$i]."<br>";

rsort($produkty);//porządek odwrotny!

for($i=0; $i<5; $i++)

echo $produkty[$i]."<br>";

F. sort() zwraca uwagę na wielkość liter, dlatego wielkie litery zostaną umieszczone przed małymi


Wyk ad 5

Podczas sortowania tablic asocjacyjnych zależy nam często na utrzymaniu razem kluczy i wartości. W takim przypadku należy użyć funkcji asort() lub ksort()

$ceny = array("Biblia PHP"=>123, "Faraon"=>89, "Atlas świata"=>243, "Pan Tadeusz"=> 149);

asort($ceny);

echo "Towary wg. wartosci: <br> ";

while ($el = each($ceny)){

echo $el["key"];

echo " - ";

echo $el["value"];

echo "<br>";}

ksort($ceny);

echo "Towary wg. nazwy: <br> ";

while ($el = each($ceny))

echo $el["key"]." - ".$el["value"]."<br>";

Sortowanie odwrotne arsort() i krsort()


Wyk ad 5

Iterowanie przez tablicę

Instrukcja foreach() przypisuje wartość elementu zmiennej wskazywanej przez słowo kluczowe as

foreach(tablica as wartość) { instrukcje };

$dlugosci = array(260, 194, 123, 67, 10, 0);

foreach($dlugosci as $cm)

{ $cal = $cm / 2.54;

echo " $cm centymetrów to $cal cali <br>";}

Wyszukiwanie minimalnej i maksymalnej wartości w tablicy

min(tablica), max(tablica)

echo "Najmniejsza wartosc:".min($dlugosci)." <br>";

echo "Najwieksza wartosc:".max($dlugosci)." <br>";

Znajdowanie wartości w tablicy

in_array(igla, stog_siana) – funkcja zwraca true jeśli wartość igla jest w tablicy stog_siana

if (in_array(194, $dlugosci))

echo "Liczba 19 jest w tablicy";


Wyk ad 5

Liczenie elementów tablicy

count(tablica)

F. count() działa na wszystkich typach zmiennych i zwraca 0 jeśli badana jest zmienna pusta lub nieustawiona (można wykorzystać isset() i is_array())

Do rozdzielania ciągów na tablicę służy funkcja explode(). Jako pierwszy parametr trzeba do niej podać znak lub dłuższy ciąg który oddziela kolejne pola, jako drugi ciąg do rozdzielenia.

<?php

$dane="alfa;beta;gamma;delta";

$tablica = explode(";", $dane);

?>


Wyk ad 5

Wyszukiwanie minimalnej i maksymalnej wartości w tablicy

min(tablica), max(tablica)

echo "Najmniejsza wartosc:".min($dlugosci)." <br>";

echo "Najwieksza wartosc:".max($dlugosci)." <br>";

Znajdowanie wartości w tablicy

in_array(igla, stog_siana) – funkcja zwraca true jeśli wartość igla jest w tablicy stog_siana

if (in_array(194, $dlugosci))

echo "Liczba 194 jest w tablicy";


Wyk ad 5

Przekazywanie tablic do innego pliku metodą GET:

serialize (zamiana tablicy na ciąg znaków) unserialize

Dodatkowo koniecznestripslashes addslashes

<FORM method=get action="przechwyt_tab.php">

<?php

$produkty = array("Ksiazki","Potop", 129.00);

echo "Po serializacji...".$p2=stripslashes(serialize($produkty));

?>

<INPUT type =hidden value='<?php echo $p2?>' name=p2>

<INPUT type =submit value=wyslij>

</form>

plik wywołany z formularza

<?php

echo $_GET["p2"]."<BR>";

$p3=unserialize(stripslashes($_GET["p2"]));

echo"<BR>";

echo $p3[0];?>


  • Login