{"id":228565,"date":"2022-10-13T13:23:00","date_gmt":"2022-10-13T10:23:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228565"},"modified":"2022-11-09T03:02:09","modified_gmt":"2022-11-09T00:02:09","slug":"morceau-de-tableau","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/morceau-de-tableau\/","title":{"rendered":"Morceau de tableau"},"content":{"rendered":"\n<p>En utilisant array chunk( <code>array_chunk<\/code>), nous pouvons facilement diviser un tableau en un tableau multidimensionnel (un tableau de tableaux).<\/p>\n<p>La fonction de bloc de tableau peut \u00eatre utilis\u00e9e pour diviser un tableau en parties plus petites, peut-\u00eatre pour le rendre plus facile \u00e0 traiter.<\/p>\n<h2>Exemple de base<\/h2>\n<p>En supposant que nous configurions un tableau conform\u00e9ment \u00e0 l&rsquo;exemple de code ci-dessous (<code>$array<\/code>\u00e0 la ligne 1), nous pouvons fragmenter ce tableau dans un nouveau tableau multidimensionnel \u00e0 l&rsquo;aide de la <code>array_chunk<\/code>fonction \u00e0 la ligne 9.<\/p>\n<p>L&rsquo;ex\u00e9cution de ce code entra\u00eenerait le tableau multidimensionnel \u00e0 la ligne 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>Composition<\/h2>\n<pre><code>$chunked_array = array_chunk( $array, $chunk, $preserve_keys );\n<\/code><\/pre>\n<p>La <code>array_chunk<\/code>fonction accepte trois param\u00e8tres, <code>$array<\/code>, <code>$chunk<\/code>et <code>$preserve_keys<\/code>(optionnel, faux par d\u00e9faut). Ceux-ci sont les suivants :<\/p>\n<ol>\n<li>Le <code>$array<\/code>param\u00e8tre accepte un tableau, et est le tableau initial que nous souhaitons transformer.<\/li>\n<li>Le <code>$chunk<\/code>accepte un nombre entier et est le nombre que nous utilisons pour diviser le <code>$array<\/code>en parties de cette valeur.<\/li>\n<li>Le param\u00e8tre facultatif <code>$preserve_keys<\/code>accepte un bool\u00e9en et conservera les cl\u00e9s du tableau si <code>true<\/code>.<\/li>\n<\/ol>\n<h2>Caract\u00e9ristiques et exemples sp\u00e9cifiques<\/h2>\n<h3>Conserver les cl\u00e9s<\/h3>\n<p>En explorant le <code>$preserve_keys<\/code>param\u00e8tre, notre exemple pr\u00e9c\u00e9dent commence l&rsquo;index de chaque tableau imbriqu\u00e9 \u00e0 0. Cependant, si nous devions passer <code>true<\/code>dans ce param\u00e8tre, l&rsquo;index d&rsquo;origine du tableau initial serait conserv\u00e9 intact\u00a0:<\/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>Dans la sortie, les cl\u00e9s sont d\u00e9sormais s\u00e9quentielles, comme elles le seraient dans le tableau d&rsquo;origine (0, 1, 2, 3\u2026).<\/p>\n<h3>Conserver les cl\u00e9s lorsque le tableau d&rsquo;origine a des cl\u00e9s nomm\u00e9es<\/h3>\n<p>Si notre tableau d&rsquo;origine a des cl\u00e9s nomm\u00e9es, nous pouvons conserver les cl\u00e9s pour les conserver dans notre tableau fragment\u00e9.<\/p>\n<p>L&rsquo;exemple suivant s&rsquo;amuse un peu avec cela. Disons que nous avons en quelque sorte un tableau avec des ID de publication et des noms de publication m\u00e9lang\u00e9s.<\/p>\n<p>Nous pourrions utiliser <code>array_chunk<\/code>le <code>$preserve_keys<\/code>param\u00e8tre d\u00e9fini sur <code>true<\/code>pour les diviser en messages individuels.<\/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>Toujours en s&rsquo;amusant avec ce tableau, imaginons comment nous pourrions parcourir le <code>$chunked_array<\/code>, et ne sortir que les noms.<\/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>Blocage d&rsquo;un grand tableau pour le traitement.<\/h3>\n<p>Si nous avons un tr\u00e8s grand tableau, nous pouvons l&rsquo;utiliser <code>array_chunk<\/code>pour le diviser en petits morceaux que nous pourrions ensuite stocker s\u00e9par\u00e9ment. Voyons comment nous pourrions faire cela dans WordPress\u00a0:<\/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>Lectures compl\u00e9mentaires<\/h2>\n<p>Pour plus de lecture, vous pouvez consulter le <a href=\"https:\/\/www.php.net\/manual\/en\/function.array-chunk.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">manuel PHP<\/a>.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/wholesomecode.ltd\" class=\"external external_icon\">wholesomecode.ltd<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En utilisant un morceau de tableau (array_chunk), nous pouvons facilement diviser un tableau en un tableau multidimensionnel (un tableau de tableaux). La fonction de morceau de tableau peut \u00eatre utilis\u00e9e pour diviser un tableau en petits &#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":[915,893,717,748,801,841],"tags":[1167],"class_list":["post-228565","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-autre","category-code-2","category-developpeur","category-open-source-projektmanagement-2","category-php-3","category-tutoriels","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/228565","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/comments?post=228565"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/228565\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/224072"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=228565"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=228565"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=228565"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}