{"id":228057,"date":"2022-10-13T13:37:00","date_gmt":"2022-10-13T10:37:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228057"},"modified":"2022-11-09T00:28:49","modified_gmt":"2022-11-08T21:28:49","slug":"array-chunk","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/array-chunk\/","title":{"rendered":"Array Chunk"},"content":{"rendered":"\n<p>Genom att anv\u00e4nda array chunk (<code>array_chunk<\/code>) kan vi enkelt dela upp en array i en flerdimensionell array (en array av arrays).<\/p>\n<p>Array chunk-funktionen kan anv\u00e4ndas f\u00f6r att dela upp en array i mindre delar, kanske f\u00f6r att g\u00f6ra den l\u00e4ttare att bearbeta.<\/p>\n<h2>Grundl\u00e4ggande exempel<\/h2>\n<p>Om vi \u200b\u200bantar att vi st\u00e4ller in en array enligt nedanst\u00e5ende kodexempel (<code>$array<\/code>p\u00e5 rad 1), kan vi dela denna array till en ny flerdimensionell array med hj\u00e4lp av <code>array_chunk<\/code>funktionen p\u00e5 rad 9.<\/p>\n<p>Att k\u00f6ra denna kod skulle resultera i den flerdimensionella arrayen p\u00e5 rad 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>Sammans\u00e4ttning<\/h2>\n<pre><code>$chunked_array = array_chunk( $array, $chunk, $preserve_keys );\n<\/code><\/pre>\n<p>Funktionen <code>array_chunk<\/code>accepterar tre parametrar, <code>$array<\/code>, <code>$chunk<\/code>och <code>$preserve_keys<\/code>(valfritt, falskt som standard). Dessa \u00e4r f\u00f6ljande:<\/p>\n<ol>\n<li>Parametern <code>$array<\/code>accepterar en array och \u00e4r den initiala array som vi vill transformera.<\/li>\n<li>Den <code>$chunk<\/code>accepterar ett heltal och \u00e4r talet som vi anv\u00e4nder f\u00f6r att dela upp <code>$array<\/code>i delar av detta v\u00e4rde.<\/li>\n<li>Den valfria <code>$preserve_keys<\/code>parametern accepterar en boolean och kommer att bevara nycklarna f\u00f6r arrayen om <code>true<\/code>.<\/li>\n<\/ol>\n<h2>Funktioner och specifika exempel<\/h2>\n<h3>Bevara nycklar<\/h3>\n<p>N\u00e4r vi utforskar <code>$preserve_keys<\/code>parametern, startar v\u00e5rt tidigare exempel indexet f\u00f6r varje kapslad array p\u00e5 0. Men om vi skulle g\u00e5 <code>true<\/code>in i den h\u00e4r parametern, skulle det ursprungliga indexet f\u00f6r den initiala arrayen h\u00e5llas intakt:<\/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>I utg\u00e5ngen \u00e4r nycklarna nu sekventiella, som de skulle vara i den ursprungliga arrayen (0, 1, 2, 3&#8230;).<\/p>\n<h3>Bevara nycklar n\u00e4r den ursprungliga matrisen har namngivna nycklar<\/h3>\n<p>Om v\u00e5r ursprungliga array har namngivna nycklar, kan vi bevara nycklarna f\u00f6r att beh\u00e5lla dessa i v\u00e5r chunked array.<\/p>\n<p>F\u00f6ljande exempel har lite roligt med detta. L\u00e5t oss s\u00e4ga att vi p\u00e5 n\u00e5got s\u00e4tt har en array med n\u00e5gra inl\u00e4ggs-ID:n och inl\u00e4ggsnamn blandade.<\/p>\n<p>Vi skulle kunna anv\u00e4nda <code>array_chunk<\/code>med <code>$preserve_keys<\/code>parametern inst\u00e4lld p\u00e5 f\u00f6r <code>true<\/code>att dela upp dessa i de enskilda inl\u00e4ggen.<\/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>Fortfarande ha kul med den h\u00e4r arrayen, l\u00e5t oss f\u00f6rest\u00e4lla oss hur vi kunde g\u00e5 igenom <code>$chunked_array<\/code>, och bara mata ut namnen.<\/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>Chunking en stor array f\u00f6r bearbetning.<\/h3>\n<p>Om vi \u200b\u200bhar en mycket stor array kan vi anv\u00e4nda <code>array_chunk<\/code>f\u00f6r att dela upp den i mindre bitar som vi sedan kan lagra separat. L\u00e5t oss se hur vi kan g\u00f6ra detta i WordPress:<\/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>Vidare l\u00e4sning<\/h2>\n<p>F\u00f6r mer l\u00e4sning kan du kolla in <a href=\"https:\/\/www.php.net\/manual\/en\/function.array-chunk.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP-manualen<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/wholesomecode.ltd\" class=\"external external_icon\">wholesomecode.ltd<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Genom att anv\u00e4nda array chunk (array_chunk) kan vi enkelt dela upp en array i en flerdimensionell array (en array av arrays). Array chunk-funktionen kan anv\u00e4ndas f\u00f6r att dela upp en array i sm\u00e5&#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":[848,901,755,922,807,724],"tags":[1173],"class_list":["post-228057","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handledningar","category-koda","category-oeppen-kaella","category-oevrig","category-php-9","category-utvecklaren","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/228057","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=228057"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/228057\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/224072"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=228057"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=228057"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=228057"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}