{"id":230942,"date":"2022-12-18T13:12:00","date_gmt":"2022-12-18T10:12:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230942"},"modified":"2022-12-07T09:57:37","modified_gmt":"2022-12-07T06:57:37","slug":"bucles-de-escritura-en-php-dos-formas-la-misma-cosa","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/bucles-de-escritura-en-php-dos-formas-la-misma-cosa\/","title":{"rendered":"Bucles de escritura en PHP: dos formas; La misma cosa"},"content":{"rendered":"\n<p>Cuando trabaja con una colecci\u00f3n en PHP, en particular, matrices en PHP, hay dos formas en las que principalmente ve la informaci\u00f3n manipulada:<\/p>\n<ol>\n<li>a trav\u00e9s <code>for<\/code>\u00a0de bucles,<\/li>\n<li>a trav\u00e9s de una variedad de <code>array<\/code>\u00a0funciones que proporciona PHP.<\/li>\n<\/ol>\n<p>Por lo que vale, creo que las <code>array<\/code>\u00a0funciones brindan una mayor legibilidad, pero se ha demostrado que son m\u00e1s lentas (especialmente con datos m\u00e1s grandes; con datos m\u00e1s peque\u00f1os, naturalmente ser\u00e1 insignificante).<\/p>\n<p>A menudo trabajo con <code>for<\/code>bucles y funciones relacionadas para lograr lo mismo, pero pens\u00e9 que valdr\u00eda la pena ver un ejemplo de <a href=\"https:\/\/tommcfarlin.com\/tags-without-links-1-4-0\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">la publicaci\u00f3n anterior<\/a> y c\u00f3mo us\u00e9 las <code>array<\/code>funciones para lograr lo mismo que un <code>for<\/code>\u00a0bucle.<\/p>\n<p>En \u00faltima instancia, esta es una publicaci\u00f3n de comparaci\u00f3n, pero creo que es bueno ver c\u00f3mo el mismo c\u00f3digo se puede escribir de diferentes maneras.<\/p>\n<h2>Escribir bucles en PHP<\/h2>\n<p>Desde el principio, no estoy haciendo una afirmaci\u00f3n sobre cu\u00e1l es mejor. Esto es simplemente para mostrar c\u00f3mo se pueden lograr los bucles de escritura en PHP de varias maneras.<\/p>\n<p>Depende de usted c\u00f3mo quiere implementarlo.<\/p>\n<p>El objetivo de este ejemplo es mostrar:<\/p>\n<ul>\n<li>c\u00f3mo obtener las etiquetas para una publicaci\u00f3n determinada,<\/li>\n<li>leer sus nombres es una matriz delimitada por tuber\u00edas,<\/li>\n<li>devuelve los nombres de las etiquetas separados por la canalizaci\u00f3n en un formato de cadena.<\/li>\n<\/ul>\n<p>Y aqu\u00ed est\u00e1n las dos formas de hacerlo.<\/p>\n<h3>Uso de un bucle est\u00e1ndar<\/h3>\n<p>El uso de un <code>for<\/code>\u00a0bucle est\u00e1ndar puede verse as\u00ed:<\/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>Note que yo:<\/p>\n<ol>\n<li>inicializar una cadena,<\/li>\n<li>lee las etiquetas<\/li>\n<li>iterar a trav\u00e9s de ellos y agregarlos solo si a\u00fan no existen,<\/li>\n<li>separar la matriz usando una tuber\u00eda,<\/li>\n<li>eliminar cualquier tuber\u00eda de arrastre<\/li>\n<\/ol>\n<p>Entonces tengo la cuerda que puedo devolver.<\/p>\n<h3>Uso de funciones de matriz<\/h3>\n<p>En este ejemplo, estoy haciendo lo mismo pero el c\u00f3digo es un poco m\u00e1s compacto:<\/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>Es \u00fatil leer el c\u00f3digo desde la funci\u00f3n m\u00e1s interna hasta la m\u00e1s externa. Con eso, esto es lo que est\u00e1 pasando:<\/p>\n<ol>\n<li>Estoy tomando las etiquetas, iterando a trav\u00e9s de cada una de ellas usando una funci\u00f3n an\u00f3nima pasada a <code>array_map<\/code>,<\/li>\n<li>Luego uso la matriz devuelta y la paso <code>array_filter<\/code>\u00a0para que se eliminen los duplicados,<\/li>\n<li>Luego convierto la matriz en una cadena delimitada por tuber\u00edas.<\/li>\n<\/ol>\n<p>Al igual que arriba, tengo la cadena que puedo devolver.<\/p>\n<h3>\u00bfEso es todo?<\/h3>\n<p>S\u00ed, y eso es todo. No digo que la legibilidad de la segunda funci\u00f3n sea mejor, pero dir\u00e9 que requiere menos pasos.<\/p>\n<p>Recuerde tambi\u00e9n que es posible que los conjuntos de datos m\u00e1s grandes no funcionen tan bien.<\/p>\n<p>Independientemente, el uso de funciones de matriz integradas es realmente bueno porque proporciona un nivel de funcionalidad integrada nativa de PHP (mientras que <code>for<\/code>\u00a0los bucles son m\u00e1s comunes en todos los idiomas) que pueden ahorrarnos tiempo (como filtrar datos duplicados).<\/p>\n<h2>\u00bfAlguna referencia?<\/h2>\n<p>De hecho, si. Aparte del <a href=\"https:\/\/secure.php.net\/manual\/en\/ref.array.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">manual de PHP<\/a>, creo que <a href=\"https:\/\/carlalexander.ca\/php-array-functions-instead-loops\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Carl Alexander<\/a> tiene posiblemente el art\u00edculo m\u00e1s completo sobre este tema.<\/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=\"Bucles de escritura en PHP: dos formas; La misma cosa\" ><\/a><\/p>\n<p>Vale la pena leerlo en su totalidad, especialmente si encuentra interesante esta publicaci\u00f3n en particular.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Esta es una publicaci\u00f3n de comparaci\u00f3n, pero creo que es bueno ver c\u00f3mo el mismo c\u00f3digo se puede escribir de diferentes maneras.<\/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":[716,831,800],"tags":[1172],"class_list":["post-230942","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollador","category-guia-para-principiantes","category-php-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/230942","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=230942"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/230942\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/236064"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=230942"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=230942"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=230942"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}