✅ Noticias, temas, complementos de WEB y WordPress. Aquí compartimos consejos y las mejores soluciones para sitios web.

Bucles de escritura en PHP: dos formas; La misma cosa

26

Cuando trabaja con una colección en PHP, en particular, matrices en PHP, hay dos formas en las que principalmente ve la información manipulada:

  1. a través for de bucles,
  2. a través de una variedad de array funciones que proporciona PHP.

Por lo que vale, creo que las array funciones brindan una mayor legibilidad, pero se ha demostrado que son más lentas (especialmente con datos más grandes; con datos más pequeños, naturalmente será insignificante).

A menudo trabajo con forbucles y funciones relacionadas para lograr lo mismo, pero pensé que valdría la pena ver un ejemplo de la publicación anterior y cómo usé las arrayfunciones para lograr lo mismo que un for bucle.

En última instancia, esta es una publicación de comparación, pero creo que es bueno ver cómo el mismo código se puede escribir de diferentes maneras.

Escribir bucles en PHP

Desde el principio, no estoy haciendo una afirmación sobre cuál es mejor. Esto es simplemente para mostrar cómo se pueden lograr los bucles de escritura en PHP de varias maneras.

Depende de usted cómo quiere implementarlo.

El objetivo de este ejemplo es mostrar:

  • cómo obtener las etiquetas para una publicación determinada,
  • leer sus nombres es una matriz delimitada por tuberías,
  • devuelve los nombres de las etiquetas separados por la canalización en un formato de cadena.

Y aquí están las dos formas de hacerlo.

Uso de un bucle estándar

El uso de un for bucle estándar puede verse así:

<?php

// Setup the array to store the tag names.
$tagNames = [];

// Iterate through all of the tags.
$tags = get_the_tags();
for ($i = 0; $i < count($tags); $i++) {
  $currentTag = $tags[$i];

  // Only add names that have not been added.
  if (!in_array($currentTag->name, $tagNames)) {
      $tagNames[] = $currentTag->name;
  }
}

// Break the names of the the tags into a '|' delimited string.
$tagNameString = implode('|', $tagNames);

// Clean up the string so any trailing pipes are removed.
$tagNameString = rtrim($tagNameString, '|');

Note que yo:

  1. inicializar una cadena,
  2. lee las etiquetas
  3. iterar a través de ellos y agregarlos solo si aún no existen,
  4. separar la matriz usando una tubería,
  5. eliminar cualquier tubería de arrastre

Entonces tengo la cuerda que puedo devolver.

Uso de funciones de matriz

En este ejemplo, estoy haciendo lo mismo pero el código es un poco más compacto:

<?php

// Seperate each indidivudal entry by a '|'
implode(
  '|',
  // Remove any duplicates in the array.
  array_filter(
    /* iterate through the list of tags and add the names to an 
     * array that's returned to filter.
     */
    array_map(function ($tag) {
      return $tag->name;
    }, get_the_tags())) );

Es útil leer el código desde la función más interna hasta la más externa. Con eso, esto es lo que está pasando:

  1. Estoy tomando las etiquetas, iterando a través de cada una de ellas usando una función anónima pasada a array_map,
  2. Luego uso la matriz devuelta y la paso array_filter para que se eliminen los duplicados,
  3. Luego convierto la matriz en una cadena delimitada por tuberías.

Al igual que arriba, tengo la cadena que puedo devolver.

¿Eso es todo?

Sí, y eso es todo. No digo que la legibilidad de la segunda función sea mejor, pero diré que requiere menos pasos.

Recuerde también que es posible que los conjuntos de datos más grandes no funcionen tan bien.

Independientemente, el uso de funciones de matriz integradas es realmente bueno porque proporciona un nivel de funcionalidad integrada nativa de PHP (mientras que for los bucles son más comunes en todos los idiomas) que pueden ahorrarnos tiempo (como filtrar datos duplicados).

¿Alguna referencia?

De hecho, si. Aparte del manual de PHP, creo que Carl Alexander tiene posiblemente el artículo más completo sobre este tema.

Bucles de escritura en PHP: dos formas; La misma cosa

Vale la pena leerlo en su totalidad, especialmente si encuentra interesante esta publicación en particular.

Fuente de grabación: tommcfarlin.com

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More