create account

PHP - Tablice by fervi

View this thread on: hive.blogpeakd.comecency.com
· @fervi ·
$4.71
PHP - Tablice
<div class="text-justify">

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

https://cdn.pixabay.com/photo/2014/12/30/13/44/programming-583923_960_720.jpg

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

<table>
<tr><td>AND</td><td>&&</td></tr>
<tr><td>OR</td><td>||</td></tr>
<tr><td>NOT</td><td>!</td></tr>
</table>

Czyli zapis znakowy ;)

## Tablice

https://cdn.pixabay.com/photo/2017/03/07/13/02/thought-2123970_960_720.jpg

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

https://cdn.pixabay.com/photo/2014/10/02/06/34/war-469503_960_720.jpg

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

https://cdn.pixabay.com/photo/2018/01/29/14/08/abacus-3116200_960_720.jpg

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ł

</div>
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
👎  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
properties (23)
authorfervi
permlinkphp-tablice
categorypolish
json_metadata{"community":"busy","app":"busy/2.5.0","format":"markdown","image":["https://cdn.pixabay.com/photo/2014/12/30/13/44/programming-583923_960_720.jpg","https://cdn.pixabay.com/photo/2017/03/07/13/02/thought-2123970_960_720.jpg","https://cdn.pixabay.com/photo/2014/10/02/06/34/war-469503_960_720.jpg","https://cdn.pixabay.com/photo/2018/01/29/14/08/abacus-3116200_960_720.jpg"],"tags":["polish","busy","pl-artykuly","pl-programowanie","pl-php"]}
created2018-07-07 15:22:06
last_update2018-07-07 15:22:06
depth0
children5
last_payout2018-07-14 15:22:06
cashout_time1969-12-31 23:59:59
total_payout_value3.972 HBD
curator_payout_value0.736 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length4,921
author_reputation-1,650,858,928,265
root_title"PHP - Tablice"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id63,792,986
net_rshares2,358,566,189,326
author_curate_reward""
vote details (91)
@diosbot ·
Witaj, jestem botem patrolującym #pl-artykuly.<br>Twój post nie spełnia podstawowej reguły #pl-artykuly dotyczącej długości wpisu.<br>Wyedytuj go dopisując więcej treści lub usuń tag - dziękujemy!<br><br>Więcej o regulaminie możesz przeczytać <a href="/polish/@fervi/zmiany-w-regulaminie-pl-artykuly-2018-02-12">w podanym linku.</a>
properties (22)
authordiosbot
permlinkre-diosbot-php-tablice-20180707t152303447z
categorypolish
json_metadata{"tags":["pl-artykuly"]}
created2018-07-07 15:23:06
last_update2018-07-07 15:23:06
depth1
children1
last_payout2018-07-14 15:23:06
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length332
author_reputation879,816,834,067
root_title"PHP - Tablice"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id63,793,106
net_rshares0
@fervi ·
Aghrrr xd Diosbot, mój śmiertelny wróg
properties (22)
authorfervi
permlinkre-diosbot-re-diosbot-php-tablice-20180707t152437170z
categorypolish
json_metadata{"tags":["polish"],"app":"steemit/0.1"}
created2018-07-07 15:24:36
last_update2018-07-07 15:24:36
depth2
children0
last_payout2018-07-14 15:24:36
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length38
author_reputation-1,650,858,928,265
root_title"PHP - Tablice"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id63,793,286
net_rshares0
@mastek ·
$0.02
brakuje mi tylko wzmianki o tablicach asocjacyjnych które moim zdaniem są bardzo przydatne oraz automatycznej inkrementacji tablicy bez podawania indeksów :)
👍  
properties (23)
authormastek
permlinkre-fervi-php-tablice-20180707t155845087z
categorypolish
json_metadata{"tags":["polish"],"app":"steemit/0.1"}
created2018-07-07 15:58:48
last_update2018-07-07 15:58:48
depth1
children2
last_payout2018-07-14 15:58:48
cashout_time1969-12-31 23:59:59
total_payout_value0.019 HBD
curator_payout_value0.005 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length157
author_reputation1,985,307,692,727
root_title"PHP - Tablice"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id63,796,801
net_rshares12,808,687,322
author_curate_reward""
vote details (1)
@fervi ·
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.
properties (22)
authorfervi
permlinkre-mastek-re-fervi-php-tablice-20180707t180742844z
categorypolish
json_metadata{"tags":["polish"],"app":"steemit/0.1"}
created2018-07-07 18:07:42
last_update2018-07-07 18:07:42
depth2
children0
last_payout2018-07-14 18:07:42
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length153
author_reputation-1,650,858,928,265
root_title"PHP - Tablice"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id63,810,193
net_rshares0
@mys ·
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.
👍  
properties (23)
authormys
permlinkre-mastek-re-fervi-php-tablice-20180707t213322720z
categorypolish
json_metadata{"tags":["polish"],"community":"busy","app":"busy/2.5.0"}
created2018-07-07 21:33:24
last_update2018-07-07 21:33:24
depth2
children0
last_payout2018-07-14 21:33:24
cashout_time1969-12-31 23:59:59
total_payout_value0.000 HBD
curator_payout_value0.000 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length261
author_reputation14,948,575,541,320
root_title"PHP - Tablice"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd10,000
post_id63,826,269
net_rshares3,078,991,824
author_curate_reward""
vote details (1)