{"id":231515,"date":"2022-12-18T13:16:00","date_gmt":"2022-12-18T10:16:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231515"},"modified":"2022-12-07T09:57:44","modified_gmt":"2022-12-07T06:57:44","slug":"scrittura-di-cicli-in-php-due-modi-stessa-cosa","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/scrittura-di-cicli-in-php-due-modi-stessa-cosa\/","title":{"rendered":"Scrittura di cicli in PHP: due modi; Stessa cosa"},"content":{"rendered":"\n<p>Quando si lavora con una raccolta in PHP, in particolare gli array in PHP, ci sono due modi in cui si vedono principalmente le informazioni manipolate:<\/p>\n<ol>\n<li>attraverso <code>for<\/code>\u00a0anelli,<\/li>\n<li>attraverso una variet\u00e0 di <code>array<\/code>\u00a0funzioni fornite da PHP.<\/li>\n<\/ol>\n<p>Per quel che vale, penso che le <code>array<\/code>\u00a0funzioni forniscano una maggiore leggibilit\u00e0, ma hanno dimostrato di essere pi\u00f9 lente (soprattutto con dati pi\u00f9 grandi &#8211; con dati pi\u00f9 piccoli, sar\u00e0 naturalmente trascurabile).<\/p>\n<p>Lavoro spesso con <code>for<\/code>i loop e le relative funzioni per ottenere la stessa cosa, ma ho pensato che valesse la pena guardare un esempio <a href=\"https:\/\/tommcfarlin.com\/tags-without-links-1-4-0\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">del post precedente<\/a> e come ho usato le <code>array<\/code>funzioni per ottenere le stesse cose di un <code>for<\/code>\u00a0loop.<\/p>\n<p>In definitiva, questo \u00e8 un post di confronto, ma penso che sia bello vedere come lo stesso codice pu\u00f2 essere scritto in modi diversi.<\/p>\n<h2>Scrivere loop in PHP<\/h2>\n<p>Fin dall&#8217;inizio, non sto facendo una pretesa su quale sia meglio. Questo \u00e8 semplicemente per mostrare come la scrittura di loop in PHP pu\u00f2 essere ottenuta in diversi modi.<\/p>\n<p>Sta a te decidere come implementarlo.<\/p>\n<p>L&#8217;obiettivo di questo esempio \u00e8 mostrare:<\/p>\n<ul>\n<li>come ottenere i tag per un determinato post,<\/li>\n<li>leggere i loro nomi \u00e8 un array delimitato da pipe,<\/li>\n<li>restituisce i nomi dei tag separati dalla pipe in un formato stringa.<\/li>\n<\/ul>\n<p>Ed ecco i due modi per farlo.<\/p>\n<h3>Utilizzo di un ciclo standard<\/h3>\n<p>L&#8217;uso di un ciclo standard <code>for<\/code>\u00a0potrebbe assomigliare a questo:<\/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>Si noti che io:<\/p>\n<ol>\n<li>inizializzare una stringa,<\/li>\n<li>leggi i tag<\/li>\n<li>scorrere e aggiungerli solo se non esistono gi\u00e0,<\/li>\n<li>separare l&#8217;array usando una pipe,<\/li>\n<li>rimuovere eventuali tubi di trascinamento<\/li>\n<\/ol>\n<p>Quindi ho la stringa che posso restituire.<\/p>\n<h3>Utilizzo delle funzioni di matrice<\/h3>\n<p>In questo esempio, sto facendo la stessa cosa ma il codice \u00e8 un po&#8217; pi\u00f9 compatto:<\/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>\u00c8 utile leggere il codice dalla funzione pi\u00f9 interna a quella pi\u00f9 esterna. Detto questo, ecco cosa sta succedendo:<\/p>\n<ol>\n<li>Sto prendendo i tag, scorrendo ciascuno di essi usando una funzione anonima passata a <code>array_map<\/code>,<\/li>\n<li>Quindi uso l&#8217;array restituito e lo passo in <code>array_filter<\/code>\u00a0modo che i duplicati vengano rimossi,<\/li>\n<li>Quindi converto l&#8217;array in una stringa delimitata da pipe.<\/li>\n<\/ol>\n<p>Proprio come sopra, ho la stringa che posso restituire.<\/p>\n<h3>Questo \u00e8 tutto?<\/h3>\n<p>S\u00ec &#8211; e basta. Non sto dicendo che la leggibilit\u00e0 della seconda funzione sia migliore ma dir\u00f2 che richiede meno passaggi.<\/p>\n<p>Ricorda, inoltre, che set di dati pi\u00f9 grandi potrebbero non funzionare altrettanto bene.<\/p>\n<p>Indipendentemente da ci\u00f2, l&#8217;uso delle funzioni di matrice integrate \u00e8 davvero utile perch\u00e9 fornisce un livello di funzionalit\u00e0 integrate native di PHP (mentre i <code>for<\/code>\u00a0loop sono pi\u00f9 comuni in tutte le lingue) che pu\u00f2 farci risparmiare tempo (come filtrare i dati duplicati).<\/p>\n<h2>Qualche riferimento?<\/h2>\n<p>Attualmente si. A parte <a href=\"https:\/\/secure.php.net\/manual\/en\/ref.array.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">il manuale PHP<\/a>, penso che <a href=\"https:\/\/carlalexander.ca\/php-array-functions-instead-loops\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Carl Alexander<\/a> abbia probabilmente l&#8217;articolo pi\u00f9 completo su questo argomento.<\/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=\"Scrittura di cicli in PHP: due modi; Stessa cosa\" ><\/a><\/p>\n<p>Vale la pena dedicare del tempo a leggerlo per intero, soprattutto se hai trovato interessante questo particolare post.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Questo \u00e8 un post di confronto, ma penso che sia bello vedere come lo stesso codice pu\u00f2 essere scritto in modi diversi.<\/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":[835,804,720],"tags":[1168],"class_list":["post-231515","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guida-per-principianti","category-php-6","category-sviluppatore","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231515","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=231515"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231515\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/236064"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=231515"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=231515"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=231515"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}