PHP - Tablice

in #polish6 years ago

No cóż, kolejna sobota, to kolejny wpis o PHP! ;)

Zacznijmy od krótkiej poprawki dotyczącej poprzedniego tekstu - mikro tabelka

AND&&
OR||
NOT!

Czyli zapis znakowy ;)

Tablice

Można powiedzieć o tablicach, że to zmienna z szufladkami. Po prostu pod jedną nazwą i odpowiednim numerem (indeksem) [można używać też liter] można przechować jakieś dane.

Ktoś może zastanowić się - po co? Bo powiedzmy, że mamy życie gracza to możemy zapisać jako zmienną $zyciegracza i tyle.

Problem pojawia się gdy na przykład wczytujemy plik. Takie coś zapisywane jest do tablicy, gdzie jeden element przechowuje jedną linijkę.

Ale może to nie być intuicyjne. Co można przechowywać (oprócz wszystkiego). Na przykład nie tyle życie gracza to jakieś statystyki:

$statystyki["hp"]=100;
$statystyki["mana"]=150;

I odwoływać się po nazwie - czyli po prostu jako zbiór. Zbiór kart w talii, zbiór kart w ręce, statystyki, dane ze stron internetowych i tak dalej. To wszystko ostatecznie przechowuje się w tablicach.

Najczęściej w tablicach indeksy mają wartość liczbową - liczoną od 0.

<?php

$liczba[0] = 5;
$liczba[1] = 3;

echo $liczba[0]+$liczba[1];

Print_r

Kiedyś mówiliśmy o echo jako sposobie wyświetlania danych. Funkcja ta wyświetla w zasadzie stringi, integery i tak dalej. Nie nadaje się do wyświetlania tablic. Print_ zresztą też nie do końca nie, to po prostu wizualizacja jak wygląda coś co jest w danym elemencie (np. tablicy).

Weźmy przykład:

<?php

$tekst[0] = "Ala ma kota";
$tekst[1] = "Kot ma Alę";
$tekst[2] = "Idzie Grześ przez wieś";

echo $tekst;

Mamy tablicę z 3 elementami. Jeśli zrobimy echo $tekst bez podania elementu dostaniemy ostrzeżenie i informacje, że to jest tablica (od echo). Ale print_r pozwoli nam na jej ładne wizualne przedstawienie. Nie przyda się to do strony, ale do pokazania nam co znajduje się w środku (czyli coś w rodzaju debuggowania).

<?php

$tekst[0] = "Ala ma kota";
$tekst[1] = "Kot ma Alę";
$tekst[2] = "Idzie Grześ przez wieś";

print_r($tekst);

A wynik wygląda tak:
Array
(
[0] => Ala ma kota
[1] => Kot ma Alę
[2] => Idzie Grześ przez wieś
)

Czyli wyświetlił, że to tablica i ma element 0 o wartości "Ala ma kota" ... i tak dalej.

Eksplozja i implozja

Dzisiaj raczej nie zaczniemy pętli, ale omówimy parę przydatnych funkcji co do tablic:

Explode i Implode to dwie funkcje o odwrotnych opcjach.
Implode łączy elementy tablic w jeden string
Explode rozsadza string na elementy tablicy

Oczywiście musimy wiedzieć jak chcemy łączyć.

$implozja = implode(",", $tekst);

Czyli w skrócie - funkcja implode połączy nam przecinkiem wszystkie wartości $tekst i zapisze jako string do zmiennej implozja.

<?php

$tekst[0] = "Ala ma kota";
$tekst[1] = "Kot ma Alę";
$tekst[2] = "Idzie Grześ przez wieś";

$implozja = implode(",", $tekst);
echo $implozja;

Wynik: Ala ma kota,Kot ma Alę,Idzie Grześ przez wieś

Eksplozja rozbija string na tablicę. Ale zamiast dzielić tekst po przecinku, podzielmy po spacjach. Powinniśmy uzyskać wyrazy w danym stringu (u nas nie do końca, bo jak jest przecinek to nie ma spacji, ale jako demo).

<?php

$tekst[0] = "Ala ma kota";
$tekst[1] = "Kot ma Alę";
$tekst[2] = "Idzie Grześ przez wieś";

$implozja = implode(",", $tekst);
$eksplozja = explode(" ", $implozja);
print_r($eksplozja);

A wynik wygląda tak:
Array
(
[0] => Ala
[1] => ma
[2] => kota,Kot
[3] => ma
[4] => Alę,Idzie
[5] => Grześ
[6] => przez
[7] => wieś
)

Ale po co to robić? Powiedzmy, że szukamy słowa Grześ. Są do tego specjalne funkcje, ale my nie musimy chcieć ich używać. Dzięki pętli możemy sprawdzić czy np. gdzieś nie występuje za pomocą if.

Liczenie elementów

Jak niektórzy sprawdzili wartości są od 0 do 7. Daje nam to 8 elementów. Ale możemy to sprawdzić funkcją:
echo count($eksplozja);

Która zwróci nam ile jest elementów - Wynik to 8. Ale po co nam to wiedzieć?

Powiedzmy, że ktoś doda parę zdań, a my chcemy sprawdzić czy Grześ się powtarza gdzieś ;) Ilość wyrazów jest różna, przecież ktoś może dodać ich więcej. Wiedząc ile jest wyrazów możemy poprosić funkcję o zrobienie czegoś.

Przyda nam się to w następnym tekście, gdzie będę pokazywał coś na pętlach ;)

Dzisiaj zadania domowego nie ma.

Rozwiązanie poprzedniego:

<?php

$a = 98;

if(($a%2!=0) && ($a > 0 && $a < 100)) {
echo 'Ok';
}

Jeśli ktoś czuje się zakłopotany, spokojnie - praktyka czyni mistrza, a będziesz tego często używał

Sort:  

brakuje mi tylko wzmianki o tablicach asocjacyjnych które moim zdaniem są bardzo przydatne oraz automatycznej inkrementacji tablicy bez podawania indeksów :)

Tablice w PHP to tak naprawdę bardzo rozbudowane obiekty. Nie tylko przechowują wartości, ale także linki, hashe i wiele innych rzeczy. Dlatego zajmują nawet do 100x więcej miejsca w pamięci w porównaniu do innych języków programowania - są bardzo mało wydajne.

Aż tak dobry to nie jestem chyba :D W sensie asocjacyjne ok, ale automatyczna inkrementacja to nie :D Zwykle DB to robi, więc ja nie potrzebuję, ale hmm.

Witaj, jestem botem patrolującym #pl-artykuly.
Twój post nie spełnia podstawowej reguły #pl-artykuly dotyczącej długości wpisu.
Wyedytuj go dopisując więcej treści lub usuń tag - dziękujemy!

Więcej o regulaminie możesz przeczytać w podanym linku.

Aghrrr xd Diosbot, mój śmiertelny wróg

Coin Marketplace

STEEM 0.28
TRX 0.13
JST 0.032
BTC 60913.71
ETH 2919.21
USDT 1.00
SBD 3.71