{"id":231224,"date":"2022-12-18T13:08:00","date_gmt":"2022-12-18T10:08:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231224"},"modified":"2022-12-07T09:57:43","modified_gmt":"2022-12-07T06:57:43","slug":"ecrire-des-boucles-en-php-deux-manieres-meme-chose","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fr\/ecrire-des-boucles-en-php-deux-manieres-meme-chose\/","title":{"rendered":"\u00c9crire des boucles en PHP\u00a0: deux\u00a0mani\u00e8res\u00a0; M\u00eame chose"},"content":{"rendered":"\n<p>Lorsque vous travaillez avec une collection en PHP, notamment des tableaux en PHP, vous voyez principalement les informations manipul\u00e9es de deux mani\u00e8res\u00a0:<\/p>\n<ol>\n<li>\u00e0 travers des <code>for<\/code>\u00a0boucles,<\/li>\n<li>\u00e0 travers une vari\u00e9t\u00e9 de <code>array<\/code>\u00a0fonctions fournies par PHP.<\/li>\n<\/ol>\n<p>Pour ce que \u00e7a vaut, je pense que les <code>array<\/code>\u00a0fonctions offrent une plus grande lisibilit\u00e9, mais elles se sont av\u00e9r\u00e9es plus lentes (en particulier avec des donn\u00e9es plus volumineuses &#8211; avec des donn\u00e9es plus petites, cela va naturellement \u00eatre n\u00e9gligeable).<\/p>\n<p>Je travaille souvent avec des <code>for<\/code>boucles et des fonctions associ\u00e9es pour obtenir la m\u00eame chose, mais j&rsquo;ai pens\u00e9 qu&rsquo;il serait peut-\u00eatre utile de regarder un exemple du <a href=\"https:\/\/tommcfarlin.com\/tags-without-links-1-4-0\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">post pr\u00e9c\u00e9dent<\/a> et comment j&rsquo;ai utilis\u00e9 les <code>array<\/code>fonctions pour obtenir les m\u00eames choses qu&rsquo;une <code>for<\/code>\u00a0boucle.<\/p>\n<p>En fin de compte, il s&rsquo;agit d&rsquo;un article de comparaison, mais je pense qu&rsquo;il est bon de voir comment le m\u00eame code peut \u00eatre \u00e9crit de diff\u00e9rentes mani\u00e8res.<\/p>\n<h2>\u00c9crire des boucles en PHP<\/h2>\n<p>D\u00e8s le d\u00e9part, je ne pr\u00e9tends pas ce qui est le mieux. Ceci est simplement pour montrer comment l&rsquo;\u00e9criture de boucles en PHP peut \u00eatre r\u00e9alis\u00e9e de plusieurs mani\u00e8res.<\/p>\n<p>C&rsquo;est \u00e0 vous de d\u00e9cider comment vous voulez l&rsquo;impl\u00e9menter.<\/p>\n<p>Le but de cet exemple est de montrer :<\/p>\n<ul>\n<li>comment r\u00e9cup\u00e9rer les tags d&rsquo;un post donn\u00e9,<\/li>\n<li>lire leurs noms est un tableau d\u00e9limit\u00e9 par des tubes,<\/li>\n<li>renvoie les noms de balises s\u00e9par\u00e9s par le tube dans un format de cha\u00eene.<\/li>\n<\/ul>\n<p>Et voici les deux fa\u00e7ons de le faire.<\/p>\n<h3>Utilisation d&rsquo;une boucle standard<\/h3>\n<p>L&rsquo;utilisation d&rsquo;une boucle standard <code>for<\/code>\u00a0peut ressembler \u00e0 ceci\u00a0:<\/p>\n<pre><code>&lt;?php\n\n\/\/ Setup the array to store the tag names.\n$tagNames = [];\n\n\/\/ Iterate through all of the tags.\n$tags = get_the_tags();\nfor ($i = 0; $i &lt; count($tags); $i++) {\n  $currentTag = $tags[$i];\n\n  \/\/ Only add names that have not been added.\n  if (!in_array($currentTag-&gt;name, $tagNames)) {\n      $tagNames[] = $currentTag-&gt;name;\n  }\n}\n\n\/\/ Break the names of the the tags into a '|' delimited string.\n$tagNameString = implode('|', $tagNames);\n\n\/\/ Clean up the string so any trailing pipes are removed.\n$tagNameString = rtrim($tagNameString, '|');\n<\/code><\/pre>\n<p>Remarquez que je :<\/p>\n<ol>\n<li>initialiser une cha\u00eene,<\/li>\n<li>lire les balises<\/li>\n<li>les parcourir et les ajouter uniquement s&rsquo;ils n&rsquo;existent pas d\u00e9j\u00e0,<\/li>\n<li>s\u00e9parer le tableau \u00e0 l&rsquo;aide d&rsquo;un tuyau,<\/li>\n<li>supprimer tous les tuyaux qui tra\u00eenent<\/li>\n<\/ol>\n<p>Ensuite, j&rsquo;ai la cha\u00eene que je peux retourner.<\/p>\n<h3>Utilisation des fonctions de tableau<\/h3>\n<p>Dans cet exemple, je fais la m\u00eame chose mais le code est un peu plus compact :<\/p>\n<pre><code>&lt;?php\n\n\/\/ Seperate each indidivudal entry by a '|'\nimplode(\n  '|',\n  \/\/ Remove any duplicates in the array.\n  array_filter(\n    \/* iterate through the list of tags and add the names to an \n     * array that's returned to filter.\n     *\/\n    array_map(function ($tag) {\n      return $tag-&gt;name;\n    }, get_the_tags())) );<\/code><\/pre>\n<p>Il est utile de lire le code de la fonction la plus interne \u00e0 la plus externe. Avec \u00e7a, voici ce qui se passe :<\/p>\n<ol>\n<li>Je prends les balises, parcourant chacune d&rsquo;elles \u00e0 l&rsquo;aide d&rsquo;une fonction anonyme transmise \u00e0 <code>array_map<\/code>,<\/li>\n<li>J&rsquo;utilise ensuite le tableau renvoy\u00e9 et le transmets <code>array_filter<\/code>\u00a0afin que les doublons soient supprim\u00e9s,<\/li>\n<li>Ensuite, je convertis le tableau en une cha\u00eene d\u00e9limit\u00e9e par des tuyaux.<\/li>\n<\/ol>\n<p>Tout comme ci-dessus, j&rsquo;ai la cha\u00eene que je peux retourner.<\/p>\n<h3>C&rsquo;est \u00e7a?<\/h3>\n<p>Oui &#8211; et c&rsquo;est tout. Je ne dis pas que la lisibilit\u00e9 de la deuxi\u00e8me fonction est meilleure mais je dirai qu&rsquo;elle n\u00e9cessite moins d&rsquo;\u00e9tapes.<\/p>\n<p>N&rsquo;oubliez pas non plus que des ensembles de donn\u00e9es plus volumineux peuvent ne pas fonctionner aussi bien.<\/p>\n<p>Quoi qu&rsquo;il en soit, l&rsquo;utilisation de fonctions de tableau int\u00e9gr\u00e9es est vraiment agr\u00e9able car elle fournit un niveau de fonctionnalit\u00e9 int\u00e9gr\u00e9e native de PHP (alors que <code>for<\/code>\u00a0les boucles sont plus courantes dans tous les langages) qui peut nous faire gagner du temps (comme le filtrage des donn\u00e9es en double).<\/p>\n<h2>Des r\u00e9f\u00e9rences ?<\/h2>\n<p>En fait, oui. Mis \u00e0 part <a href=\"https:\/\/secure.php.net\/manual\/en\/ref.array.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">le manuel PHP<\/a>, je pense que <a href=\"https:\/\/carlalexander.ca\/php-array-functions-instead-loops\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Carl Alexander<\/a> a sans doute l&rsquo;article le plus complet sur ce sujet.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161046-61e71a7e3ffca.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161046-61e71a7e3ffca.png\" alt=\"\u00c9crire des boucles en PHP\u00a0: deux\u00a0mani\u00e8res\u00a0; M\u00eame chose\" ><\/a><\/p>\n<p>Cela vaut la peine de le lire dans son int\u00e9gralit\u00e9, surtout si vous avez trouv\u00e9 cet article int\u00e9ressant.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ceci est un article de comparaison mais je pense qu&rsquo;il est bon de voir comment le m\u00eame code peut \u00eatre \u00e9crit de diff\u00e9rentes mani\u00e8res.<\/p>\n","protected":false},"author":1,"featured_media":236064,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[717,832,801],"tags":[1167],"class_list":["post-231224","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-developpeur","category-guide-pour-les-debutants","category-php-3","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231224","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=231224"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/posts\/231224\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media\/236064"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/media?parent=231224"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/categories?post=231224"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fr\/wp-json\/wp\/v2\/tags?post=231224"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}