Para cualquiera de los tipos: integer, float, string, boolean 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.
Es posible comparar matrices con
array_diff() y mediante operadores de matriz.
El tipo matriz en PHP es bastante versátil, así que aquí se presentan algunos ejemplos que demuestran el poder completo de las matrices.
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 "¿Le gusta el $color?\n"; } ?> |
El resultado del ejemplo seria:
¿Le gusta el rojo?
¿Le gusta el azul?
¿Le gusta el verde?
¿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 anterioresforeach ($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(1 => '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", 5 => "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.
No response to “Conversión a matriz”
Publicar un comentario