Conversión a matriz

Para cualquiera de los tipos: integerfloatstringboolean y resource, si convierte un valor a un array, obtiene una matriz con un elemento (con índice 0), el cual es el valor escalar con el que inició.

Si convierte un object a una matriz, obtiene las propiedades (variables miembro) de ese objeto como los elementos de la matriz. Las claves son los nombres de las variables miembro.
Si convierte un valor NULL a matriz, obtiene una matriz vacía.

Comparación

Es posible comparar matrices con array_diff() y mediante operadores de matriz.

Ejemplos

El tipo matriz en PHP es bastante versátil, así que aquí se presentan algunos ejemplos que demuestran el poder completo de las matrices.



<?php// esto$a = array( 'color'  => 'rojo',
            
'sabor'  => 'dulce',
            
'forma'  => 'redonda',
            
'nombre' => 'manzana',
                       
4        // la clave sera 0
          
);
// es completamente equivalente con$a['color']  = 'rojo';$a['sabor']  = 'dulce';$a['forma']  = 'redonda';$a['nombre'] = 'manzana';$a[]         = 4;        // la clave sera 0
$b[] = 'a';$b[] = 'b';$b[] = 'c';// resultara en la matriz array(0 => 'a' , 1 => 'b' , 2 => 'c'),
// o simplemente array('a', 'b', 'c')
?>


Ejemplo 11-6. Uso de array()
<?php// Array como mapa de propiedades$mapa = array( 'version'          => 4,
               
'SO'               => 'Linux',
               
'idioma            => 'ingles',
               '
etiquetas_cortas' => true
            );

// claves estrictamente numericas
$matriz = array( 7,
                 8,
                 0,
                 156,
                 -10
               );
// esto es lo mismo que array(0 => 7, 1 => 8, ...)

$cambios = array(         10, // clave = 0
                  5    =>  6,
                  3    =>  7,
                  '
a'  =>  4,
                          11, // clave = 6 (el indice entero maximo era 5)
                  '
8'  =>  2, // clave = 8 (entero!)
                  '
02' => 77, // clave = '02'
                  0    => 12  // el valor 10 sera reemplazado por 12
                );

// matriz vacia
$vacio = array();
?>
Ejemplo 11-7. Colección
<?php
$colores 
= array('rojo''azul''verde''amarillo');

foreach (
$colores as $color) {
    echo 
"&iquest;Le gusta el $color?\n";
}
?>
El resultado del ejemplo seria:
&iquest;Le gusta el rojo?
&iquest;Le gusta el azul?
&iquest;Le gusta el verde?
&iquest;Le gusta el amarillo?
Modificar los valores de la matriz directamente es posible a partir de PHP 5, pasándolos por referencia. Las versiones anteriores necesitan una solución alternativa:
Ejemplo 11-8. Colección
<?php// PHP 5foreach ($colores as &$color) {
    
$color strtoupper($color);
}
unset(
$color); /* se asegura de que escrituras subsiguientes a $color
no modifiquen el ultimo elemento de la matriz */

// Alternativa para versiones anteriores
foreach ($colores as $clave => $color) {
    
$colores[$clave] = strtoupper($color);
}
print_r($colores);?>

El resultado del ejemplo seria:
Array
(
    [0] => ROJO
    [1] => AZUL
    [2] => VERDE
    [3] => AMARILLO
)

Este ejemplo crea una matriz con base uno.

Ejemplo 11-9. Índice con base 1
<?php
$primercuarto  
= array(=> 'Enero''Febrero''Marzo');print_r($primercuarto);?>

El resultado del ejemplo seria:
Array
(
    [1] => 'Enero'
    [2] => 'Febrero'
    [3] => 'Marzo'
)


Ejemplo 11-10. Llenado de una matriz
<?php// llenar una matriz con todos los items de un directorio$gestor opendir('.');
while (
false !== ($archivo readdir($gestor))) {
    
$archivos[] = $archivo;
}
closedir($gestor);?>

Las matrices son ordenadas. Puede también cambiar el orden usando varias funciones de ordenamiento. Vea la sección sobre funciones de matrices para más información. Puede contar el número de items en una matriz usando la función count().

Ejemplo 11-11. Ordenamiento de una matriz
<?php
sort
($archivos);print_r($archivos);?>

Dado que el valor de una matriz puede ser cualquier cosa, también puede ser otra matriz. De esta forma es posible crear matrices recursivas y multi-dimensionales.

Ejemplo 11-12. Matrices recursivas y multi-dimensionales
<?php
$frutas 
= array ( "frutas"  => array ( "a" => "naranja",
                                       
"b" => "banano",
                                       
"c" => "manzana"
                                     
),
                  
"numeros" => array ( 1,
                                       
2,
                                       
3,
                                       
4,
                                       
5,
                                       
6
                                     
),
                  
"hoyos"   => array (      "primero",
                                       
=> "segundo",
                                            
"tercero"
                                     
)
                );
// Algunos ejemplos que hacen referencia a los valores de la matriz anteriorecho $frutas["hoyos"][5];    // imprime "segundo"echo $frutas["frutas"]["a"]; // imprime "naranja"unset($frutas["hoyos"][0]);  // elimina "primero"

// Crear una nueva matriz multi-dimensional
$jugos["manzana"]["verde"] = "bien";?>

Debe advertir que la asignación de matrices siempre involucra la copia de valores. También quiere decir que el apuntador interno de matriz usado por current() y otras funciones similares es reestablecido. Necesita usar el operador de referencia para copiar una matriz por referencia.



<?php
$matriz1 
= array(23);$matriz2 $matriz1;$matriz2[] = 4// $matriz2 cambia,
                // $matriz1 sigue siendo array(2, 3)
$matriz3 = &$matriz1;$matriz3[] = 4// ahora $matriz1 y $matriz3 son iguales?>



No response to “Conversión a matriz”