Iterables en PHP

I

¿Qué es un Iterable en PHP?

Recuerde el tutorial de bucles en esta serie de PHP y llegue al bucle foreach para ser exactos. En este artículo, aprenderá iterables en PHP en enlace con bucle foreach.

  • Iterables es cualquier valor que el bucle foreach acepte y sea iterable.
  • PHP 7.1 introdujo este tipo de pseudodatos y se puede utilizar como tipo de funciones de retorno de datos. Además, la función puede aceptar iterables como argumento.

¿Cómo usar Iterables en PHP?

iterable La palabra clave define el tipo del argumento o el tipo de retorno de la función debe ser un valor iterable. mira el siguiente ejemplo.

Ejemplo

<?php
function printIterable(iterable $myIterable) {
  foreach($myIterable as $item) {
    echo $item;
  }
}

$arr = ["a", "b", "c"];
printIterable($arr);
?>
  • En el ejemplo anterior. creamos una función que acepta algún argumento. Especificamos que el argumento debe ser iterable usando iterable palabra clave.
  • Ahora, si llamamos a esta función y pasamos un valor no iterable como argumento de la función, arrojará un error.
  • Por lo tanto, los iterables se aseguran de proporcionar un valor iterable al ciclo foreach dentro de una función. Piense e intente pasar un valor no iterable al bucle foreach y verifique qué sucede. Entonces, deberías ser más claro sobre el uso de iterables.

Ejemplo: función que devuelve Iterable

En el ejemplo anterior, estudiamos el iterable como argumento de la función, ahora veremos el iterable como el valor de retorno de una función.

<?php
function getIterable():iterable {
  return ["a", "b", "c"];
}

$myIterable = getIterable();
foreach($myIterable as $item) {
  echo $item;
}
?>
  • En el ejemplo anterior, creamos una función que simplemente devuelve algún valor. Concéntrese en el tipo de devolución de la función en el lado derecho del nombre de la función iterable. Hace que sea obligatorio que la función devuelva un valor iterable.
  • Llame a la función y pase el valor devuelto al bucle foreach. Intente ejecutar este ejemplo en su máquina y vea qué eco se imprime en la pantalla.
  • Intente practicar este ejemplo devolviendo algún valor no iterable fuera de la función. Lea el error y luego devuelva algunas matrices simples y bidimensionales.

¿Cómo crear Iterables en PHP?

  • Matrices: todas las matrices en PHP son iterables. Como al comienzo de esta lectura, aprendió que cualquier dato que pueda aceptar el bucle foreach es iterable. Por lo tanto, todas las matrices individuales, multidimensionales y asociativas son iterables de forma predeterminada.
  • Iteradores: una interfaz de iterador implementada en un objeto también es aceptada por una función que requiere datos iterables en el argumento.

Un iterador consta de los datos que se repiten y los métodos que funcionan juntos para recorrer los datos. Un puntero siempre apunta a un elemento de los datos. Cada elemento de los datos contiene una clave que se utiliza para encontrar cada elemento dentro de los datos del iterable.

Para hacer un iterador, debe implementar los siguientes métodos.

  • siguiente() – Mueve el puntero al siguiente elemento en los datos.
  • rebobinar() – El puntero comienza a apuntar al primer elemento de datos.
  • válido() – Se asegura de que el puntero apunte al elemento deseado o no. Por ejemplo, si se llama a next() y el puntero es el último elemento de los datos, no existe ningún elemento de datos después de él. Entonces válido devolverá falso. Volverá verdadero cuando next() se mueva al siguiente elemento y rewind() se mueva al primer elemento.

Ejemplo

Crear iterable implementando la interfaz de iterador y luego usarlo como iterable.

<?php
// Create an Iterator
class MyIterator implements Iterator {
  private $items = [];
  private $pointer = 0;

  public function __construct($items) {
    // array_values() makes sure that the keys are numbers
    $this->items = array_values($items);
  }

  public function current() {
    return $this->items[$this->pointer];
  }

  public function key() {
    return $this->pointer;
  }

  public function next() {
    $this->pointer++;
  }

  public function rewind() {
    $this->pointer = 0;
  }

  public function valid() {
    // count() indicates how many items are in the list
    return $this->pointer < count($this->items);
  }
}

// A function that uses iterables
function printIterable(iterable $myIterable) {
  foreach($myIterable as $item) {
    echo $item;
  }
}

// Use the iterator as an iterable
$iterator = new MyIterator(["a", "b", "c"]);
printIterable($iterator);
?>

Ahora que se ha familiarizado con los conceptos básicos de PHP, es hora de investigar Bases de datos MYSQL siguiente.

Agregar comentario

Red de tutores

Aprende PHP de la A a la Z