{"id":738,"date":"2022-03-13T16:23:49","date_gmt":"2022-03-13T15:23:49","guid":{"rendered":"https:\/\/piotrgabriel.pl\/wiki\/?p=738"},"modified":"2024-03-03T18:34:17","modified_gmt":"2024-03-03T17:34:17","slug":"php-4-tablice-i-ich-manipulacja","status":"publish","type":"post","link":"https:\/\/piotrgabriel.pl\/wiki\/php-4-tablice-i-ich-manipulacja\/","title":{"rendered":"PHP 4 &#8211; Tablice i ich manipulacja"},"content":{"rendered":"<p>W \u015bwiecie programowania PHP, tablice s\u0105 jednym z najbardziej fundamentalnych i pot\u0119\u017cnych typ\u00f3w danych, s\u0142u\u017c\u0105cych do przechowywania zbior\u00f3w element\u00f3w. <!--more-->W tym artykule, skierowanym do uczni\u00f3w technikum informatycznego, zag\u0142\u0119bimy si\u0119 w tworzenie i u\u017cywanie tablic oraz nauczymy si\u0119, jak efektywnie je manipulowa\u0107 za pomoc\u0105 r\u00f3\u017cnych funkcji wbudowanych w PHP.<\/p>\n<h2>Czy print_r to to samo co echo?<\/h2>\n<p>Zanim jednak przejdziemy do w\u0142a\u015bciwej cz\u0119\u015bci artyku\u0142u, wyja\u015bnijmy czym jest funkcja print_r, gdy\u017c bardzo cz\u0119sto pojawia si\u0119 pytanie, czy to nie jest to samo co echo?<\/p>\n<p>Nie, <code>print_r<\/code> i <code>echo<\/code> nie s\u0105 tym samym w PHP, chocia\u017c oba s\u0142u\u017c\u0105 do wy\u015bwietlania danych. Kluczowe r\u00f3\u017cnice mi\u0119dzy nimi dotycz\u0105 g\u0142\u00f3wnie sposobu u\u017cycia i typ\u00f3w danych, kt\u00f3re mog\u0105 wy\u015bwietla\u0107:<\/p>\n<p><strong><code>echo<\/code><\/strong>:<\/p>\n<ul>\n<li>Jest konstrukcj\u0105 j\u0119zyka u\u017cywan\u0105 do wy\u015bwietlania prostych ci\u0105g\u00f3w znak\u00f3w.<\/li>\n<li>Mo\u017ce przyjmowa\u0107 wiele argument\u00f3w (od PHP 5.4).<\/li>\n<li>Nie jest w\u0142a\u015bciwie funkcj\u0105, co oznacza, \u017ce nie jest wymagane u\u017cycie nawias\u00f3w (cho\u0107 mo\u017cna je u\u017cy\u0107).<\/li>\n<li>Szybsze dla pojedynczych ci\u0105g\u00f3w znak\u00f3w.<\/li>\n<li>Nie mo\u017ce bezpo\u015brednio wy\u015bwietla\u0107 zawarto\u015bci tablic lub obiekt\u00f3w.<\/li>\n<\/ul>\n<p>Przyk\u0142ad u\u017cycia <code>echo<\/code>:<\/p>\n<p><code>echo \"Witaj, \u015bwiecie!\";<\/code><\/p>\n<p><strong><code>print_r<\/code><\/strong>:<\/p>\n<ul>\n<li>Jest funkcj\u0105, kt\u00f3ra wy\u015bwietla ludzko czyteln\u0105 informacj\u0119 o zmiennej. Bardzo przydatna do debugowania.<\/li>\n<li>Mo\u017ce wy\u015bwietli\u0107 z\u0142o\u017cone typy danych, takie jak tablice i obiekty, w formacie, kt\u00f3ry jest \u0142atwy do zrozumienia.<\/li>\n<li>Przyjmuje tylko jeden argument.<\/li>\n<li>Mo\u017ce by\u0107 u\u017cywana do zwracania danych jako warto\u015b\u0107 zamiast ich wy\u015bwietlania, je\u015bli jako drugi argument przeka\u017ce si\u0119 <code>true<\/code>.<\/li>\n<\/ul>\n<p>Przyk\u0142ad u\u017cycia <code>print_r<\/code>:<\/p>\n<p><code><span class=\"hljs-variable\">$arr<\/span> = [<span class=\"hljs-string\">\"a\"<\/span> =&gt; <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-string\">\"b\"<\/span> =&gt; <span class=\"hljs-number\">2<\/span>]; <\/code><\/p>\n<p><code><span class=\"hljs-title function_ invoke__\">print_r<\/span>(<span class=\"hljs-variable\">$arr<\/span>); <\/code><\/p>\n<p><code><span class=\"hljs-comment\">\/* Wy\u015bwietli: <\/span><\/code><\/p>\n<p><code><span class=\"hljs-comment\">Array ( <\/span><\/code><\/p>\n<p><code><span class=\"hljs-comment\">[a] =&gt; 1 <\/span><\/code><\/p>\n<p><code><span class=\"hljs-comment\">[b] =&gt; 2 <\/span><\/code><\/p>\n<p><code><span class=\"hljs-comment\">) *\/<\/span><\/code><\/p>\n<p>Podsumowuj\u0105c, <code>echo<\/code> jest u\u017cywane g\u0142\u00f3wnie do wy\u015bwietlania prostych ci\u0105g\u00f3w tekstowych, podczas gdy <code>print_r<\/code> jest narz\u0119dziem do debugowania, kt\u00f3re pozwala na wy\u015bwietlanie szczeg\u00f3\u0142owych informacji o z\u0142o\u017conych typach danych, takich jak tablice i obiekty.<\/p>\n<p>Teraz mo\u017cemy ju\u017c wr\u00f3ci\u0107 do w\u0142a\u015bciwej cz\u0119\u015bci artyku\u0142u.<\/p>\n<h2>Czym s\u0105 tablice asocjacyjne?<\/h2>\n<p>Tablica asocjacyjna w PHP jest typem tablicy, w kt\u00f3rej ka\u017cdy element jest identyfikowany za pomoc\u0105 unikalnego klucza. W przeciwie\u0144stwie do tablic indeksowanych, gdzie elementy s\u0105 dost\u0119pne za pomoc\u0105 indeks\u00f3w liczbowych, elementy tablicy asocjacyjnej s\u0105 dost\u0119pne za pomoc\u0105 kluczy, kt\u00f3re mog\u0105 by\u0107 ci\u0105gami znak\u00f3w lub liczbami.<\/p>\n<p>Klucze w tablicy asocjacyjnej s\u0105 unikalne i zwi\u0105zane z okre\u015blonymi warto\u015bciami, co umo\u017cliwia \u0142atwe i szybkie odnajdywanie danych w tablicy. Tablice asocjacyjne s\u0105 bardzo przydatne, gdy chcemy przechowywa\u0107 dane, kt\u00f3re maj\u0105 naturalne nazwy lub identyfikatory, takie jak w\u0142a\u015bciwo\u015bci obiekt\u00f3w, informacje o u\u017cytkowniku, konfiguracje itp.<\/p>\n<p><strong>Przyk\u0142ad deklaracji tablicy asocjacyjnej:<\/strong><\/p>\n<p><code>$informacjeOUzytkowniku = array(<\/code><br \/>\n<code>\"imie\" =&gt; \"Jan\",<\/code><br \/>\n<code>\"nazwisko\" =&gt; \"Kowalski\",<\/code><br \/>\n<code>\"email\" =&gt; \"jan.kowalski@example.com\",<\/code><br \/>\n<code>\"wiek\" =&gt; 30<\/code><br \/>\n<code>);<\/code><\/p>\n<p><code>\/\/ Mo\u017cna r\u00f3wnie\u017c u\u017cy\u0107 kr\u00f3tszej sk\u0142adni:<\/code><br \/>\n<code>$informacjeOUzytkowniku = [<\/code><br \/>\n<code>\"imie\" =&gt; \"Jan\",<\/code><br \/>\n<code>\"nazwisko\" =&gt; \"Kowalski\",<\/code><br \/>\n<code>\"email\" =&gt; \"jan.kowalski@example.com\",<\/code><br \/>\n<code>\"wiek\" =&gt; 30<\/code><br \/>\n<code>];<\/code><\/p>\n<p><strong>Dost\u0119p do element\u00f3w tablicy asocjacyjnej:<\/strong><\/p>\n<p>Mo\u017cemy uzyska\u0107 dost\u0119p do warto\u015bci w tablicy asocjacyjnej, odwo\u0142uj\u0105c si\u0119 do nich za pomoc\u0105 kluczy:<\/p>\n<p><code>echo $informacjeOUzytkowniku[\"imie\"]; \/\/ Wy\u015bwietli \"Jan\"<\/code><br \/>\n<code>echo $informacjeOUzytkowniku[\"email\"]; \/\/ Wy\u015bwietli \"jan.kowalski@example.com\"<\/code><\/p>\n<p><strong>Modyfikacja element\u00f3w tablicy:<\/strong><\/p>\n<p>Elementy tablicy asocjacyjnej mog\u0105 by\u0107 r\u00f3wnie\u017c modyfikowane lub dodawane przez odwo\u0142anie si\u0119 do nich za pomoc\u0105 klucza:<\/p>\n<p><code>$informacjeOUzytkowniku[\"wiek\"] = 31; \/\/ Zmienia wiek Jana na 31<\/code><br \/>\n<code>$informacjeOUzytkowniku[\"miasto\"] = \"Warszawa\"; \/\/ Dodaje now\u0105 par\u0119 klucz-warto\u015b\u0107 do tablicy<\/code><\/p>\n<p>Tablice asocjacyjne w PHP s\u0105 niezwykle elastyczne i pot\u0119\u017cne, umo\u017cliwiaj\u0105c \u0142atwe i intuicyjne zarz\u0105dzanie z\u0142o\u017conymi zbiorami danych.<\/p>\n<h2>To teraz, czym s\u0105 tablice indeksowane numerycznie?<\/h2>\n<p>Tablice indeksowane numerycznie to podstawowy typ tablic w j\u0119zyku PHP, w kt\u00f3rych ka\u017cdy element tablicy ma przypisany automatycznie numer indeksu. Indeksy te s\u0105 liczbami ca\u0142kowitymi, zaczynaj\u0105cymi si\u0119 domy\u015blnie od zera. Dzi\u0119ki temu elementy w tablicy mo\u017cna \u0142atwo identyfikowa\u0107 i odwo\u0142ywa\u0107 si\u0119 do nich za pomoc\u0105 tych numer\u00f3w indeks\u00f3w.<\/p>\n<p><strong>Charakterystyka tablic indeksowanych numerycznie:<\/strong><\/p>\n<ul>\n<li><strong>Automatyczne indeksowanie:<\/strong> Kiedy dodajesz element do tablicy bez podawania klucza, PHP automatycznie przypisuje mu indeks. Pierwszy element, kt\u00f3ry dodasz, otrzyma indeks 0, nast\u0119pny 1, i tak dalej.<\/li>\n<li><strong>Elastyczno\u015b\u0107:<\/strong> Mo\u017cesz dodawa\u0107, usuwa\u0107 i modyfikowa\u0107 elementy w tablicy indeksowanej.<\/li>\n<li><strong>Kolejno\u015b\u0107 element\u00f3w:<\/strong> W tablicach indeksowanych elementy s\u0105 uporz\u0105dkowane w kolejno\u015bci, w jakiej zosta\u0142y dodane, co pozwala na \u0142atwe iterowanie po nich.<\/li>\n<\/ul>\n<p>Przyk\u0142ad deklaracji tablicy indeksowanej numerycznie:<\/p>\n<p><code>$owoce = array(\"Jab\u0142ko\", \"Banana\", \"Pomara\u0144cza\");<\/code><br \/>\n<code>\/\/ Lub u\u017cywaj\u0105c kr\u00f3tszej sk\u0142adni:<\/code><br \/>\n<code>$owoce = [\"Jab\u0142ko\", \"Banana\", \"Pomara\u0144cza\"];<\/code><\/p>\n<p><code>\/\/ Dost\u0119p do element\u00f3w tablicy:<\/code><br \/>\n<code>echo $owoce[0]; \/\/ Wy\u015bwietla \"Jab\u0142ko\"<\/code><br \/>\n<code>echo $owoce[1]; \/\/ Wy\u015bwietla \"Banana\"<\/code><\/p>\n<p><strong>Operacje na tablicach indeksowanych:<\/strong><\/p>\n<p><strong>Dodawanie element\u00f3w:<\/strong> Mo\u017cesz doda\u0107 nowy element na ko\u0144cu tablicy za pomoc\u0105 funkcji <code>array_push()<\/code> lub po prostu przypisuj\u0105c warto\u015b\u0107 do nowego indeksu.<\/p>\n<p><code>array_push($owoce, \"Kiwi\"); \/\/ Dodaje \"Kiwi\" na ko\u0144cu tablicy<\/code><br \/>\n<code>$owoce[] = \"Mango\"; \/\/ Inny spos\u00f3b dodawania \"Mango\" na ko\u0144cu tablicy<\/code><\/p>\n<p><strong>Usuwanie element\u00f3w:<\/strong> Mo\u017cesz usun\u0105\u0107 ostatni element tablicy za pomoc\u0105 <code>array_pop()<\/code> lub pierwszy element za pomoc\u0105 <code>array_shift()<\/code>.<\/p>\n<p><code>array_pop($owoce); \/\/ Usuwa ostatni element tablicy<\/code><br \/>\n<code>array_shift($owoce); \/\/ Usuwa pierwszy element tablicy<\/code><\/p>\n<p><strong>Sortowanie:<\/strong> PHP oferuje r\u00f3\u017cne funkcje do sortowania tablic, np. <code>sort()<\/code> dla sortowania rosn\u0105cego.<\/p>\n<p><code>sort($owoce); \/\/ Sortuje tablic\u0119 rosn\u0105co<\/code><\/p>\n<p>Tablice indeksowane numerycznie s\u0105 niezwykle przydatne w wielu scenariuszach, od prostego przechowywania listy element\u00f3w, po bardziej z\u0142o\u017cone struktury danych wykorzystywane w aplikacjach webowych. Ich intuicyjna natura sprawia, \u017ce s\u0105 one jednym z pierwszych typ\u00f3w danych, z kt\u00f3rymi nowi programi\u015bci PHP powinni si\u0119 zapozna\u0107.<\/p>\n<h2>Tworzenie i u\u017cywanie tablic<\/h2>\n<p>Tablice w PHP mog\u0105 przechowywa\u0107 warto\u015bci r\u00f3\u017cnych typ\u00f3w danych i s\u0105 dost\u0119pne w dw\u00f3ch g\u0142\u00f3wnych formach: indeksowane numerycznie i asocjacyjne.<\/p>\n<p><strong>Tworzenie tablicy indeksowanej numerycznie:<\/strong><\/p>\n<p><code>$owoce = array(\"Jab\u0142ko\", \"Banana\", \"Pomara\u0144cza\");<\/code><br \/>\n<code>\/\/ Lub kr\u00f3tsza sk\u0142adnia<\/code><br \/>\n<code>$owoce = [\"Jab\u0142ko\", \"Banana\", \"Pomara\u0144cza\"];<\/code><\/p>\n<p><code>echo $owoce[0]; \/\/ Wy\u015bwietla \"Jab\u0142ko\"<\/code><\/p>\n<p><strong>Tworzenie tablicy asocjacyjnej:<\/strong><\/p>\n<p><code>$wiek = array(\"Jan\" =&gt; 25, \"Anna\" =&gt; 22, \"Pawe\u0142\" =&gt; 30);<\/code><br \/>\n<code>\/\/ Lub kr\u00f3tsza sk\u0142adnia<\/code><br \/>\n<code>$wiek = [\"Jan\" =&gt; 25, \"Anna\" =&gt; 22, \"Pawe\u0142\" =&gt; 30];<\/code><\/p>\n<p><code>echo $wiek[\"Jan\"]; \/\/ Wy\u015bwietla 25<\/code><\/p>\n<h2>Funkcje do manipulowania tablicami<\/h2>\n<p>PHP oferuje szeroki zakres funkcji do pracy z tablicami. Oto kilka przyk\u0142ad\u00f3w najbardziej przydatnych funkcji:<\/p>\n<p><strong><code>sort()<\/code> &#8211; Sortuje tablice<\/strong><\/p>\n<p>Sortowanie tablicy indeksowanej numerycznie:<\/p>\n<p><code>$liczby = [4, 2, 3, 1, 5];<\/code><br \/>\n<code>sort($liczby);<\/code><\/p>\n<p><code>print_r($liczby); \/\/ Wy\u015bwietla posortowan\u0105 tablic\u0119<\/code><\/p>\n<p><strong><code>array_push()<\/code> &#8211; Dodaje jeden lub wi\u0119cej element\u00f3w na ko\u0144cu tablicy<\/strong><\/p>\n<p><code>Dodawanie elementu do tablicy:<\/code><\/p>\n<p><code>$owoce = [\"Jab\u0142ko\", \"Banana\"];<\/code><br \/>\n<code>array_push($owoce, \"Pomara\u0144cza\", \"Kiwi\");<\/code><\/p>\n<p><code>print_r($owoce); \/\/ Dodaje \"Pomara\u0144cza\" i \"Kiwi\" na ko\u0144cu tablicy<\/code><\/p>\n<p><strong><code>array_merge()<\/code> &#8211; Scala jedn\u0105 lub wi\u0119cej tablic<\/strong><\/p>\n<p>\u0141\u0105czenie dw\u00f3ch tablic w jedn\u0105:<\/p>\n<p><code>$tablica1 = [\"a\" =&gt; \"zielony\", \"b\" =&gt; \"br\u0105zowy\"];<\/code><br \/>\n<code>$tablica2 = [\"c\" =&gt; \"niebieski\", \"b\" =&gt; \"\u017c\u00f3\u0142ty\"];<\/code><br \/>\n<code>$wynik = array_merge($tablica1, $tablica2);<\/code><\/p>\n<p><code>print_r($wynik);<\/code><br \/>\n<code>\/*<\/code><br \/>\n<code>Wy\u015bwietla:<\/code><br \/>\n<code>Array<\/code><br \/>\n<code>(<\/code><br \/>\n<code>[a] =&gt; zielony<\/code><br \/>\n<code>[b] =&gt; \u017c\u00f3\u0142ty<\/code><br \/>\n<code>[c] =&gt; niebieski<\/code><br \/>\n<code>)<\/code><br \/>\n<code>*\/<\/code><\/p>\n<p><strong>Dodatkowe funkcje do manipulowania tablicami:<\/strong><\/p>\n<ul>\n<li><strong><code>array_pop()<\/code><\/strong> &#8211; Usuwa ostatni element tablicy.<\/li>\n<li><strong><code>array_shift()<\/code><\/strong> &#8211; Usuwa pierwszy element tablicy i przesuwa wszystkie pozosta\u0142e elementy.<\/li>\n<li><strong><code>array_unshift()<\/code><\/strong> &#8211; Dodaje jeden lub wi\u0119cej element\u00f3w na pocz\u0105tku tablicy.<\/li>\n<li><strong><code>array_slice()<\/code><\/strong> &#8211; Zwraca wybran\u0105 cz\u0119\u015b\u0107 tablicy.<\/li>\n<\/ul>\n<h4>Przyk\u0142ad u\u017cycia:<\/h4>\n<p>Wyobra\u017amy sobie, \u017ce mamy tablic\u0119 uczni\u00f3w i chcemy doda\u0107 nowego ucznia, a nast\u0119pnie posortowa\u0107 list\u0119 alfabetycznie:<\/p>\n<p><code>$uczniowie = [\"Karol\", \"Ewa\", \"Bartek\"];<\/code><br \/>\n<code>array_push($uczniowie, \"Daria\");<\/code><br \/>\n<code>sort($uczniowie);<\/code><\/p>\n<p><code>print_r($uczniowie);<\/code><br \/>\n<code>\/*<\/code><br \/>\n<code>Wy\u015bwietla:<\/code><br \/>\n<code>Array<\/code><br \/>\n<code>(<\/code><br \/>\n<code>[0] =&gt; Bartek<\/code><br \/>\n<code>[1] =&gt; Daria<\/code><br \/>\n<code>[2] =&gt; Ewa<\/code><br \/>\n<code>[3] =&gt; Karol<\/code><br \/>\n<code>)<\/code><br \/>\n<code>*\/<\/code><\/p>\n<p>Tablice w PHP s\u0105 niezwykle elastyczne i oferuj\u0105 wiele mo\u017cliwo\u015bci do efektywnej pracy z danymi. Znajomo\u015b\u0107 r\u00f3\u017cnych funkcji do manipulowania tablicami jest kluczowa dla ka\u017cdego aspiruj\u0105cego programisty PHP, umo\u017cliwiaj\u0105c tworzenie bardziej z\u0142o\u017conych i efektywnych aplikacji. Mam nadziej\u0119, \u017ce ten artyku\u0142 dostarczy\u0142 solidnych podstaw i zach\u0119ci do dalszego eksplorowania mo\u017cliwo\u015bci, jakie oferuj\u0105 tablice w PHP.<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>W \u015bwiecie programowania PHP, tablice s\u0105 jednym z najbardziej fundamentalnych i pot\u0119\u017cnych typ\u00f3w danych, s\u0142u\u017c\u0105cych do przechowywania zbior\u00f3w element\u00f3w.<\/p>\n","protected":false},"author":1,"featured_media":730,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[244],"tags":[67,245],"class_list":["post-738","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php","tag-php","tag-tablice"],"_links":{"self":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/738","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/comments?post=738"}],"version-history":[{"count":0,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/738\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/media\/730"}],"wp:attachment":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/media?parent=738"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/categories?post=738"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/tags?post=738"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}