{"id":228670,"date":"2022-10-13T13:33:00","date_gmt":"2022-10-13T10:33:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228670"},"modified":"2022-11-09T03:42:36","modified_gmt":"2022-11-09T00:42:36","slug":"array-chunk","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/array-chunk\/","title":{"rendered":"Array Chunk"},"content":{"rendered":"\n<p>K\u00e4ytt\u00e4m\u00e4ll\u00e4 taulukkopalaa (<code>array_chunk<\/code>) voimme helposti jakaa taulukon moniulotteiseksi taulukoksi (taulukoiden matriisi).<\/p>\n<p>Matriisipalafunktiolla voitaisiin jakaa taulukko pienempiin osiin, ehk\u00e4 helpottamaan sen k\u00e4sittely\u00e4.<\/p>\n<h2>Perusesimerkki<\/h2>\n<p>Olettaen, ett\u00e4 asetamme taulukon alla olevan koodiesimerkin mukaisesti (<code>$array<\/code>rivill\u00e4 1), voimme jakaa t\u00e4m\u00e4n taulukon uudeksi moniulotteiseksi taulukoksi <code>array_chunk<\/code>rivin 9 funktiolla.<\/p>\n<p>T\u00e4m\u00e4n koodin suorittaminen johtaisi moniulotteiseen taulukkoon rivill\u00e4 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>S\u00e4vellys<\/h2>\n<pre><code>$chunked_array = array_chunk( $array, $chunk, $preserve_keys );\n<\/code><\/pre>\n<p>Funktio <code>array_chunk<\/code>hyv\u00e4ksyy kolme parametria, <code>$array<\/code>ja <code>$chunk<\/code>( <code>$preserve_keys<\/code>valinnainen, oletuksena false). N\u00e4m\u00e4 ovat seuraavat:<\/p>\n<ol>\n<li>Parametri <code>$array<\/code>hyv\u00e4ksyy taulukon ja on alkuper\u00e4inen taulukko, jonka haluamme muuntaa.<\/li>\n<li>Hyv\u00e4ksyy kokonaisluvun, ja se on luku <code>$chunk<\/code>, jota k\u00e4yt\u00e4mme jakamaan <code>$array<\/code>t\u00e4m\u00e4n arvon osiin.<\/li>\n<li>Valinnainen <code>$preserve_keys<\/code>parametri hyv\u00e4ksyy loogisen arvon ja s\u00e4ilytt\u00e4\u00e4 taulukon avaimet, jos <code>true<\/code>.<\/li>\n<\/ol>\n<h2>Ominaisuudet ja erityiset esimerkit<\/h2>\n<h3>S\u00e4ilyt\u00e4 avaimet<\/h3>\n<p>Parametria tutkiessa <code>$preserve_keys<\/code>edellinen esimerkkimme aloittaa jokaisen sis\u00e4kk\u00e4isen taulukon indeksin nollasta. Jos kuitenkin siirrymme <code>true<\/code>t\u00e4h\u00e4n parametriin, alkuper\u00e4isen taulukon alkuper\u00e4inen indeksi s\u00e4ilyisi ennallaan:<\/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>Tulosteessa avaimet ovat nyt per\u00e4kk\u00e4isi\u00e4, kuten ne olisivat alkuper\u00e4isess\u00e4 taulukossa (0, 1, 2, 3\u2026).<\/p>\n<h3>S\u00e4ilyt\u00e4 avaimet, kun alkuper\u00e4isess\u00e4 ryhm\u00e4ss\u00e4 on nimettyj\u00e4 avaimia<\/h3>\n<p>Jos alkuper\u00e4isess\u00e4 taulukossamme on nimettyj\u00e4 avaimia, voimme s\u00e4ilytt\u00e4\u00e4 avaimet s\u00e4ilytt\u00e4\u00e4ksemme ne lohkotussa taulukossamme.<\/p>\n<p>Seuraava esimerkki on hieman hauska t\u00e4m\u00e4n kanssa. Oletetaan, ett\u00e4 meill\u00e4 on jollain tapaa taulukko, jossa on sekoitettuja postitunnuksia ja viestien nimi\u00e4.<\/p>\n<p>Voisimme <code>array_chunk<\/code>jakaa ne yksitt\u00e4isiin viesteihin <code>$preserve_keys<\/code>parametrin kanssa .<code>true<\/code><\/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>Pid\u00e4mme silti hauskaa t\u00e4m\u00e4n taulukon kanssa. Kuvittelemme kuinka voisimme k\u00e4yd\u00e4 l\u00e4pi <code>$chunked_array<\/code>ja tulostaa vain nimet.<\/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>Suuren joukon paloittaminen k\u00e4sittely\u00e4 varten.<\/h3>\n<p>Jos meill\u00e4 on eritt\u00e4in suuri joukko, voimme <code>array_chunk<\/code>jakaa sen pienemmiksi paloiksi, jotka voimme sitten tallentaa erikseen. Katsotaanpa, kuinka voimme tehd\u00e4 t\u00e4m\u00e4n WordPressiss\u00e4:<\/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>Lue lis\u00e4\u00e4<\/h2>\n<p>Lis\u00e4tietoa voit lukea <a href=\"https:\/\/www.php.net\/manual\/en\/function.array-chunk.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP &#8211; oppaasta<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/wholesomecode.ltd\" class=\"external external_icon\">wholesomecode.ltd<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Array chunk (array_chunk) avulla voimme helposti jakaa taulukon moniulotteiseksi taulukoksi (matriisijoukko). Array chunk -funktiolla voidaan jakaa taulukko pieniksi&#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":[750,719,895,917,843,803],"tags":[1166],"class_list":["post-228670","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-avoin-laehdekoodi","category-kehittaejae","category-koodi","category-muut","category-opetusohjelmia","category-php-5","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/228670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=228670"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/228670\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/224072"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=228670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=228670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=228670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}