tag - ¿Crear una matriz 2D vacía en PHP?
php array num rows (7)
Sé que las matrices se crean dinámicamente, y crearlas antes de tiempo no es realmente necesario, pero ¿cómo se puede hacer eso con una matriz 2D? De la misma manera?
(for$j)
{
for($i)
{
$array[j][i] = "data";
}
}
¿Algo como eso? Obviamente real para bucles, por supuesto.
¿Podrías especificar lo que estás tratando de hacer? Puede recorrer las matrices multidimensionales con la función foreach
$ary=array( "subarr" => array("foo","bar") );
foreach($ary as $a){
foreach($a as $ary_sub){
echo $ary_sub;
}
}
o
foreach($ary["subarr"] as $key=>$subval){
echo $subval;
}
El uso de "array (array ())" creará una matriz 2D con un elemento "vacío" en la primera posición. Para crear una matriz en 2D verdaderamente vacía, debe eliminarse.
<?php
$emptyArray = array(array()); // Creates a 2D array with one empty element in $emptyArray[0]
array_pop($emptyArray); // Pops element[0] off the array
?>
En su forma más simple, una matriz bidimensional se puede crear como:
<?php
$emptyArray = array(array());
?>
O a partir de PHP 5.4 también puede usar:
<?php
$emptyArray = [[]];
?>
La documentación de PHP siempre es una buena manera de comenzar con este tipo de preguntas básicas.
<?php
$arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42));
echo $arr["somearray"][6]; // 5
echo $arr["somearray"][13]; // 9
echo $arr["somearray"]["a"]; // 42
?>
No se crea una matriz 2d en PHP, no en el sentido tradicional.
Las sugerencias anteriores sobre $a = array(array());
de hecho, simplemente creando la siguiente matriz:
$a = array(
0 => array( )
);
Por lo tanto, $a[0][0] = ''test'';
daría como resultado lo siguiente:
$a = array(
0 => array(
0 => ''test''
)
);
A primera vista, parece que funciona, pero de hecho, esta aún no es una matriz 2d. Cuando intenta utilizar la 2da fila (índice 1), en este punto, PHP lanzaría un aviso. P.ej:
$a[1][0] = ''test2'';
Esto se debe a que $a[1]
no contiene nada (¿recuerda esa array(array())
simplemente creando una matriz en el índice 0?
Para que funcione, necesita hacer una vez más $a[1] = array();
, o si desea evitar los índices, puede hacerlo, $a[] = array();
.
Ejemplo
$a = array(); // array of columns
for($c=0; $c<5; $c++){
$a[$c] = array(); // array of cells for column $c
for($r=0; $r<3; $r++){
$a[$c][$r] = rand();
}
}
El código anterior crea una matriz 5x3 "2d" de números aleatorios.
Si quiero crear una matriz vacía para manejar líneas desde archivos de texto, solo uso $ array = array ();
// dynamic 2D array
$twoD = array(array());
$val = 0;
// fill the array
for($r = 0; $r < 4; $r++) {
for($c = 0; $c < 4; $c++)
$twoD[$r][$c] = $val++;
}
// print the current value of $val
echo $val."<br/>------------------<br/>";
// print the array
for($r = 0; $r < 4; $r++) {
for($c = 0; $c < 4; $c++)
echo $twoD[$r][$c];
echo "<br/>";
}