iterator_to_array

(PHP 5 >= 5.1.0)

iterator_to_arrayCopia el iterador en un array

Descripción

array iterator_to_array ( Traversable $iterator [, bool $use_keys = true ] )

Copia los elementos de un iterador en un array.

Parámetros

iterator

El iterador a ser copiado.

use_keys

Si se desea usar las claves del elemento iterador como un índice.

En PHP 5.5 y posterior, si una clave es un array u object, se generará una advertencia. Las claves NULL serán convertidas a un string vacío, las claves double serán truncadas a su equivalente integer, las claves resource generarán una advertencia y serán convertidas a sus ID de recursos, y las claves boolean serán convertidas a enteros.

Valores devueltos

Un array que contiene los elementos del iterator.

Historial de cambios

Versión Descripción
5.5.0 iterator_to_array() adquiere soporte para tipos de claves diferentes a integer y string cuando el parámetro use_keys está habilitado.
5.2.1 Añadido el parámetro use_keys.

Ejemplos

Ejemplo #1 Ejemplo de iterator_to_array()

<?php
$iterator 
= new ArrayIterator(array('recipe'=>'panqueques''huevo''leche''harina'));
var_dump(iterator_to_array($iteratortrue));
var_dump(iterator_to_array($iteratorfalse));
?>

El resultado del ejemplo sería:

array(4) {
  ["recipe"]=>
  string(8) "panqueques"
  [0]=>
  string(3) "huevo"
  [1]=>
  string(4) "leche"
  [2]=>
  string(5) "harina"
}
array(4) {
  [0]=>
  string(8) "panqueques"
  [1]=>
  string(3) "huevo"
  [2]=>
  string(4) "leche"
  [3]=>
  string(5) "harina"
}

add a note add a note

User Contributed Notes 3 notes

up
3
jerome at yazo dot net
5 years ago
Using the boolean param :

<?php

$first
= new ArrayIterator( array('k1' => 'a' , 'k2' => 'b''k3' => 'c''k4' => 'd') );
$second = new ArrayIterator( array( 'k1' => 'X', 'k2' => 'Y', 'Z' ) );

$combinedIterator= new AppendIterator();
$combinedIterator->append( $first );
$combinedIterator->append( $second );

var_dump( iterator_to_array($combinedIterator, false) );

?>

will output :

array(7) (
  [0]=>
  string(1) "a"
  [1]=>
  string(1) "b"
  [2]=>
  string(1) "c"
  [3]=>
  string(1) "d"
  [4]=>
  string(1) "X"
  [5]=>
  string(1) "Y"
  [6]=>
  string(1) "Z"
)

<?php

var_dump
( iterator_to_array($combinedIterator, true) );

?>

will output (since keys would merge) :

array(5) (
  ["k1"]=>
  string(1) "X"
  ["k2"]=>
  string(1) "Y"
  ["k3"]=>
  string(1) "c"
  ["k4"]=>
  string(1) "d"
  [0]=>
  string(1) "Z"
)
up
1
joksnet at gmail dot com
28 days ago
To generate an deep array from nested iterators:

<?php
function iterator_to_array_deep(\Traversable $iterator, $use_keys = true) {
   
$array = array();
    foreach (
$iterator as $key => $value) {
        if (
$value instanceof \Iterator) {
           
$value = iterator_to_array_deep($value, $use_keys);
        }
        if (
$use_keys) {
           
$array[$key] = $value;
        } else {
           
$array[] = $value;
        }
    }
    return
$array;
}
?>

I use it to test an iterator: https://gist.github.com/jm42/cb328106f393eeb28751
up
0
chad 0x40 herballure 0x2e com
6 years ago
The use_keys parameter was added in one of the 5.2.x releases; it defaults to TRUE. This matches the behavior in PHP 5.1.6, which lacks this parameter.
To Top