{"id":420,"date":"2026-05-08T19:45:51","date_gmt":"2026-05-08T19:45:51","guid":{"rendered":"https:\/\/piotrswitlicki.pl\/?p=420"},"modified":"2026-05-08T20:20:57","modified_gmt":"2026-05-08T20:20:57","slug":"rzutowanie-zmiennych-w-php-kompletny-przewodnik-z-przykladami","status":"publish","type":"post","link":"https:\/\/piotrswitlicki.pl\/pl\/2026\/05\/08\/rzutowanie-zmiennych-w-php-kompletny-przewodnik-z-przykladami\/","title":{"rendered":"Rzutowanie zmiennych w PHP \u2013 kompletny przewodnik (z przyk\u0142adami)"},"content":{"rendered":"\nRzutowanie (ang. <em>type casting<\/em>) w PHP to proces r\u0119cznej zmiany typu zmiennej. PHP jest j\u0119zykiem dynamicznie typowanym, co oznacza, \u017ce typy zmiennych s\u0105 cz\u0119sto zmieniane automatycznie. Jednak w praktyce to w\u0142a\u015bnie r\u0119czne rzutowanie daje kontrol\u0119, stabilno\u015b\u0107 i przewidywalno\u015b\u0107 kodu.<br><br>\ud83d\udd39 1. Czym jest rzutowanie?<br>Rzutowanie to jawna zmiana typu danych.<br>Przyk\u0142ad:<br><br><code>$value = \"123\";<br>$int = (int) $value;<\/code><br><br>\ud83d\udc49 wynik: <code>123<\/code> jako integer, nie string<br><br>\ud83d\udd39 2. Podstawowe typy rzutowania<br>PHP wspiera kilka g\u0142\u00f3wnych typ\u00f3w:<br>Rzutowanie<br>Typ<br>(int) \/ (integer)<br>liczba ca\u0142kowita<br>(float) \/ (double)<br>liczba zmiennoprzecinkowa<br>(string)<br>tekst<br>(bool)<br>warto\u015b\u0107 logiczna<br>(array)<br>tablica<br>(object)<br>obiekt<br><br>\ud83d\udd39 3. Rzutowanie na int<br>Przyk\u0142ad:<br><br><code>$a = \"10\";<br>$b = (int) $a;<\/code><br><br>Wynik:<br><br><code>10<\/code><br><br><br>\ud83d\udccc Zasady:<br><br><code>(int) \"10abc\" \/\/ 10<br>(int) \"abc10\" \/\/ 0<br>(int) true \/\/ 1<br>(int) false \/\/ 0<\/code><br><br>\ud83d\udc49 PHP bierze liczby od pocz\u0105tku stringa<br><br>\ud83d\udd39 4. Rzutowanie na float<br><br><code>$value = \"10.75\";<br>$float = (float) $value;<\/code><br><br>Wynik:<br><br><code>10.75<\/code><br><br><br>\ud83d\udd39 5. Rzutowanie na string<br><br><code>$value = 123;<br>$str = (string) $value;<\/code><br><br>Wynik:<br><br><code>\"123\"<\/code><br><br><br>\ud83d\udccc ciekawostka:<br><br><code>(string) true \/\/ \"1\"<br>(string) false \/\/ \"\"<\/code><br><br><br>\ud83d\udd39 6. Rzutowanie na boolean<br><br><code>(bool) 0 \/\/ false<br>(bool) 1 \/\/ true<br>(bool) \"\" \/\/ false<br>(bool) \"0\" \/\/ false<br>(bool) \"abc\" \/\/ true<\/code><br><br><br>\ud83d\udd25 7. RZUTOWANIE TABLIC (wa\u017cne!)<br>\u27a4 string \u2192 array<br><br><code>$data = \"php,java,go\";<br>$arr = (array) $data;<\/code><br><br>Wynik:<br><br><code>[\"php,java,go\"]<\/code><br><br>\ud83d\udc49 UWAGA: to NIE split!<br><br>\u2714 poprawne rozbicie stringa:<br><br><code>$data = \"php,java,go\";<br>$arr = explode(\",\", $data);<\/code><br><br>Wynik:<br><br><code>[\"php\", \"java\", \"go\"]<\/code><br><br><br>\ud83d\udd25 8. Tablica \u2192 string<br><br><code>$arr = [\"php\", \"java\", \"go\"];<br>$str = implode(\",\", $arr);<\/code><br><br>Wynik:<br><br><code>\"php,java,go\"<\/code><br><br><br>\ud83d\udd25 9. Rzutowanie tablic asocjacyjnych<br><br><code>$data = (array) \"test\";<\/code><br><br>Wynik:<br><br><code>[0 => \"test\"]<\/code><br><br><br>\ud83d\udd25 10. object \u2192 array<br><br><code>$obj = (object) [<br>\"name\" => \"John\",<br>\"age\" => 30<br>];<br><br>$arr = (array) $obj;<\/code><br><br>Wynik:<br><br><code>[<br>\"name\" => \"John\",<br>\"age\" => 30<br>]<\/code><br><br><br>\ud83d\udd25 11. array \u2192 object<br><br><code>$arr = [<br>\"name\" => \"John\",<br>\"age\" => 30<br>];<br><br>$obj = (object) $arr;<\/code><br><br>Wynik:<br><br><code>$obj->name; \/\/ John<br>$obj->age; \/\/ 30<\/code><br><br><br>\u26a0\ufe0f 12. Najcz\u0119stsze b\u0142\u0119dy<br>\u274c 1. Mylenie (array) z explode()<br><br><code>(string) \"a,b,c\" \u2192 (array) = NIE dzia\u0142a jak split<\/code><br><br><br>\u274c 2. brak kontroli typu API<br><br><code>$val = $response['data'];<\/code><br><br>\ud83d\udc49 mo\u017ce by\u0107 null \/ string \/ array<br><br>\u274c 3. brak castowania w JSON API<br><br><code>$price = $data['price'];<\/code><br><br>lepiej:<br><br><code>$price = (float) ($data['price'] ?? 0);<\/code><br><br><br>\ud83d\udd25 13. RZUTOWANIE W PRAKTYCE (REAL WORLD)<br>API scraping:<br><br><code>$salary = (int) ($job['salary'] ?? 0);<br>$title = (string) ($job['title'] ?? '');<\/code><br><br><br>DB safety:<br><br><code>$id = (int) $request->input('id');<\/code><br><br><br>Boolean logic:<br><br><code>$isActive = (bool) $user['active'];<\/code><br><br><br>\ud83d\udd25 14. PHP + TABLICE (wa\u017cny mindset)<br>W PHP:<br>tablice s\u0105 \u201clu\u017ane\u201d \u2192 trzeba je normalizowa\u0107<br><br>przyk\u0142ad problemu:<br><br><code>$input = \"php,java,go\";<\/code><br><br>\u274c b\u0142\u0119dnie:<br><br><code>(array) $input<\/code><br><br>\u2714 dobrze:<br><br><code>explode(\",\", $input)<\/code><br><br><br>\ud83e\udde0 15. BEST PRACTICE (pro tip)<br>Zawsze:<br><br><code>$value = (type) ($source ?? default);<\/code><br><br><br>przyk\u0142ad:<br><br><code>$page = (int) ($request['page'] ?? 1);<br>$limit = (int) ($request['limit'] ?? 20);<\/code><br><br><br>\ud83d\ude80 PODSUMOWANIE<br>Rzutowanie w PHP:<br>\u2714 daje kontrol\u0119 nad danymi<br>\u2714 chroni przed bugami API<br>\u2714 stabilizuje scraping<br>\u2714 zapobiega \u201closowym typom\u201d\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"pagelayer_contact_templates":[],"_pagelayer_content":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-420","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"acf":[],"_links":{"self":[{"href":"https:\/\/piotrswitlicki.pl\/pl\/wp-json\/wp\/v2\/posts\/420","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/piotrswitlicki.pl\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/piotrswitlicki.pl\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/piotrswitlicki.pl\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/piotrswitlicki.pl\/pl\/wp-json\/wp\/v2\/comments?post=420"}],"version-history":[{"count":2,"href":"https:\/\/piotrswitlicki.pl\/pl\/wp-json\/wp\/v2\/posts\/420\/revisions"}],"predecessor-version":[{"id":422,"href":"https:\/\/piotrswitlicki.pl\/pl\/wp-json\/wp\/v2\/posts\/420\/revisions\/422"}],"wp:attachment":[{"href":"https:\/\/piotrswitlicki.pl\/pl\/wp-json\/wp\/v2\/media?parent=420"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/piotrswitlicki.pl\/pl\/wp-json\/wp\/v2\/categories?post=420"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/piotrswitlicki.pl\/pl\/wp-json\/wp\/v2\/tags?post=420"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}