{"id":228114,"date":"2022-10-13T13:26:00","date_gmt":"2022-10-13T10:26:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228114"},"modified":"2022-11-09T00:47:23","modified_gmt":"2022-11-08T21:47:23","slug":"fragment-tablicy","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/pl\/fragment-tablicy\/","title":{"rendered":"Fragment tablicy"},"content":{"rendered":"\n<p>U\u017cywaj\u0105c fragmentu tablicy (<code>array_chunk<\/code>) mo\u017cemy \u0142atwo podzieli\u0107 tablic\u0119 na tablic\u0119 wielowymiarow\u0105 (tablic\u0119 tablic).<\/p>\n<p>Funkcji fragmentu tablicy mo\u017cna u\u017cy\u0107 do podzielenia tablicy na mniejsze cz\u0119\u015bci, by\u0107 mo\u017ce w celu u\u0142atwienia przetwarzania.<\/p>\n<h2>Podstawowy przyk\u0142ad<\/h2>\n<p>Zak\u0142adaj\u0105c, \u017ce skonfigurujemy tablic\u0119 zgodnie z poni\u017cszym przyk\u0142adem kodu (<code>$array<\/code>w wierszu 1), mo\u017cemy podzieli\u0107 t\u0119 tablic\u0119 na now\u0105 tablic\u0119 wielowymiarow\u0105 za pomoc\u0105 <code>array_chunk<\/code>funkcji w wierszu 9.<\/p>\n<p>Uruchomienie tego kodu spowodowa\u0142oby powstanie tablicy wielowymiarowej w wierszu 15.<\/p>\n<pre><code>$array = [\n    'Post 0', \n    'Post 1', \n    'Post 2', \n    'Post 3', \n    'Post 4', \n    'Post 5',\n];\n$chunked_array = array_chunk( $array, 2 );\nprint_r( $chunked_array ); \/\/ Output the new array.\n\n\/**\n * Output:\n *\n * Array\n * (*   [0] =&gt; Array\n * (*          [0] =&gt; Post 0\n *          [1] =&gt; Post 1\n *) *   [1] =&gt; Array\n * (*          [0] =&gt; Post 2\n *          [1] =&gt; Post 3\n *) *   [2] =&gt; Array\n * (*           [0] =&gt; Post 4\n *           [1] =&gt; Post 5\n *) *)\n **\/\n<\/code><\/pre>\n<h2>Kompozycja<\/h2>\n<pre><code>$chunked_array = array_chunk( $array, $chunk, $preserve_keys );\n<\/code><\/pre>\n<p>Funkcja <code>array_chunk<\/code>akceptuje trzy parametry i (opcjonalne <code>$array<\/code>, domy\u015blnie false). S\u0105 to:<code>$chunk``$preserve_keys<\/code><\/p>\n<ol>\n<li>Parametr <code>$array<\/code>przyjmuje tablic\u0119 i jest tablic\u0105 pocz\u0105tkow\u0105, kt\u00f3r\u0105 chcemy przekszta\u0142ci\u0107.<\/li>\n<li>Akceptuje liczb\u0119 ca\u0142kowit\u0105 i <code>$chunk<\/code>jest liczb\u0105, kt\u00f3rej u\u017cywamy do dzielenia <code>$array<\/code>na cz\u0119\u015bci tej warto\u015bci.<\/li>\n<li>Opcjonalny <code>$preserve_keys<\/code>parametr akceptuje warto\u015b\u0107 logiczn\u0105 i zachowuje klucze tablicy, je\u015bli <code>true<\/code>.<\/li>\n<\/ol>\n<h2>Funkcje i konkretne przyk\u0142ady<\/h2>\n<h3>Zachowaj klucze<\/h3>\n<p>Eksploruj\u0105c <code>$preserve_keys<\/code>parametr, nasz poprzedni przyk\u0142ad rozpoczyna indeks ka\u017cdej zagnie\u017cd\u017conej tablicy od 0. Jednak gdyby\u015bmy przeszli <code>true<\/code>do tego parametru, oryginalny indeks tablicy pocz\u0105tkowej pozosta\u0142by nienaruszony:<\/p>\n<pre><code>$array = [\n    'Post 0', \n    'Post 1', \n    'Post 2', \n    'Post 3', \n    'Post 4', \n    'Post 5',\n];\n$chunked_array = array_chunk( $array, 2, true );\nprint_r( $chunked_array ); \/\/ Output the new array.\n\n\/**\n * Output:\n *\n * Array\n * (*   [0] =&gt; Array\n * (*          [0] =&gt; Post 0\n *          [1] =&gt; Post 1\n *) *   [1] =&gt; Array\n * (*          [2] =&gt; Post 2\n *          [3] =&gt; Post 3\n *) *   [2] =&gt; Array\n * (*           [4] =&gt; Post 4\n *           [5] =&gt; Post 5\n *) *)\n **\/\n<\/code><\/pre>\n<p>Na wyj\u015bciu klucze s\u0105 teraz sekwencyjne, tak jak w oryginalnej tablicy (0, 1, 2, 3\u2026).<\/p>\n<h3>Zachowaj klucze, gdy oryginalna tablica ma nazwane klucze<\/h3>\n<p>Je\u015bli nasza oryginalna tablica ma nazwane klucze, mo\u017cemy zachowa\u0107 klucze, aby zachowa\u0107 je w naszej tablicy podzielonej na fragmenty.<\/p>\n<p>Poni\u017cszy przyk\u0142ad ma z tego troch\u0119 zabawy. Powiedzmy, \u017ce w jaki\u015b spos\u00f3b otrzymali\u015bmy tablic\u0119 z wymieszanymi ze sob\u0105 kilkoma identyfikatorami post\u00f3w i nazwami post\u00f3w.<\/p>\n<p>Mo\u017cemy u\u017cy\u0107 <code>array_chunk<\/code>parametru <code>$preserve_keys<\/code>ustawionego na, <code>true<\/code>aby podzieli\u0107 je na poszczeg\u00f3lne posty.<\/p>\n<pre><code>$array = [\n    'id_0'   =&gt; '10', \n    'name_0' =&gt; 'Post 1', \n    'id_1'   =&gt; '20', \n    'name_1' =&gt; 'Post 2', \n    'id_2'   =&gt; '30', \n    'name_2' =&gt; 'Post 3',\n];\n$chunked_array = array_chunk( $array, 2, true);\nprint_r( $chunked_array ); \n<\/code><\/pre>\n<p>Wci\u0105\u017c dobrze bawi\u0105c si\u0119 t\u0105 tablic\u0105, wyobra\u017amy sobie, jak mo\u017cemy przej\u015b\u0107 przez <code>$chunked_array<\/code>, i wypisa\u0107 tylko nazwy.<\/p>\n<pre><code>foreach( $chunked_array as $key =&gt; $nested_array) {\n    echo $nested_array[ 'name_'. $key ]. PHP_EOL;\n}\n<\/code><\/pre>\n<h3>Chunkowanie du\u017cej tablicy do przetwarzania.<\/h3>\n<p>Je\u015bli mamy bardzo du\u017c\u0105 tablic\u0119, mo\u017cemy <code>array_chunk<\/code>podzieli\u0107 j\u0105 na mniejsze kawa\u0142ki, kt\u00f3re nast\u0119pnie b\u0119dziemy mogli przechowywa\u0107 osobno. Zobaczmy, jak mo\u017cemy to zrobi\u0107 w WordPressie:<\/p>\n<pre><code>$original_array = [...]; \n$post_id        = get_the_ID();\n$chunked_array  = array_chunk( $original_array, 10, true );\n\nforeach( $chunked_array as $key =&gt; $array) {\n    update_post_meta( \n        $post_id,\n        '_wc_chunked_array_partial_'. $post_id,\n        $array\n    );\n}\n<\/code><\/pre>\n<h2>Dalsza lektura<\/h2>\n<p>Wi\u0119cej informacji mo\u017cna znale\u017a\u0107 w <a href=\"https:\/\/www.php.net\/manual\/en\/function.array-chunk.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">podr\u0119czniku PHP<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\u0179r\u00f3d\u0142o nagrywania:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/wholesomecode.ltd\" class=\"external external_icon\">wholesomecode.ltd<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>U\u017cywaj\u0105c fragmentu tablicy (array_chunk) mo\u017cemy \u0142atwo podzieli\u0107 tablic\u0119 na tablic\u0119 wielowymiarow\u0105 (tablic\u0119 tablic). Funkcja fragmentu tablicy mo\u017ce by\u0107 u\u017cyta do podzielenia tablicy na ma\u0142e&#8230;<\/p>\n","protected":false},"author":1,"featured_media":224072,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[721,919,897,752,805,845],"tags":[1169],"class_list":["post-228114","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deweloper","category-inny","category-kod","category-otwarte-zrodlo","category-php-7","category-samouczki","tag-affiai-pl"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/228114","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/comments?post=228114"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/posts\/228114\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media\/224072"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/media?parent=228114"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/categories?post=228114"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/pl\/wp-json\/wp\/v2\/tags?post=228114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}