¿Cuál es la forma más sencilla de crear una matriz 2d? Esperaba poder hacer algo similar a esto:
declare int d[0..m, 0..n]
También puede crear una matriz asociativa, o una matriz como una "tabla hash", especificando el índice de la matriz.
$array = array(
0 => array(
'name' => 'John Doe',
'email' => '[email protected]'
),
1 => array(
'name' => 'Jane Doe',
'email' => '[email protected]'
),
);
Que es equivalente a
$array = array();
$array[0] = array();
$array[0]['name'] = 'John Doe';
$array[0]['email'] = '[email protected]';
$array[1] = array();
$array[1]['name'] = 'Jane Doe';
$array[1]['email'] = '[email protected]';
Los siguientes son equivalentes y dan como resultado una matriz bidimensional:
o
fuente
¿Solo declarar? No tienes que hacerlo. Solo asegúrese de que la variable exista:
Las matrices se redimensionan dinámicamente y el intento de escribir cualquier cosa en un elemento inexistente lo crea (y crea una matriz completa si es necesario)
Esto es válido para cualquier número de dimensiones sin declaraciones previas.
fuente
count
en la dimensión correcta, por ejemplocount($d[1])
, a menos que no esté entendiendo tu punto.En primer lugar, PHP no tiene matrices multidimensionales, tiene matrices de matrices.
En segundo lugar, puede escribir una función que lo haga:
fuente
Para un tipo de solución simple, "llenar sobre la marcha":
$foo = array(array());
Esto le dará una matriz pseudo bidimensional flexible que puede contener $ foo [ n ] [ n ] donde n <= ∞ (por supuesto, está limitado por las limitaciones habituales del tamaño de la memoria, pero espero que entienda la idea). Esto podría, en teoría, extenderse para crear tantas submatrices como necesite.
fuente
O para matrices más grandes, todas con el mismo valor:
creará una matriz
$m
by$n
con todo configurado en$value
.fuente
Hasta donde yo sé, no hay una función php incorporada para hacer esto, debe hacerlo a través de un bucle o mediante un método personalizado que llame de forma recursiva a algo como array_fill indicado en la respuesta de @Amber;
Supongo que te refieres a crear una matriz de matrices vacía pero inicializada. Por ejemplo, desea un resultado final como el siguiente de una matriz de 3 matrices :
Esto es simple de codificar a mano, pero para una matriz de tamaño arbitrario como una matriz de 3 matrices de 3 matrices , comienza a ser complejo inicializar antes de usar:
... etc ...
Me da frustración. Sería bueno tener una manera fácil de declarar una matriz inicializada de matrices de cualquier profundidad para usar sin verificar ni arrojar errores.
fuente
La respuesta de atli realmente me ayudó a entender esto. Aquí hay un ejemplo de cómo iterar a través de una matriz bidimensional. Este ejemplo muestra cómo encontrar valores para nombres conocidos de una matriz y también un foreach donde simplemente pasa por todos los campos que encuentra allí. Espero que esto ayude a alguien.
Salidas:
fuente
Y para mí, el argumento sobre si una matriz debe ser escasa o no depende del contexto.
Por ejemplo, si $ a [6] [9] no se completa, es equivalente a $ a [6] [9] que se completa, por ejemplo, con "" o 0.
fuente
para hacer eco de un solo elemento de matriz, debe escribir:
la salida sería:
arr1 arr2
fuente
Y me gusta de esta manera:
fuente
Si desea crear rápidamente una matriz multidimensional para obtener un valor simple usando un trazador de líneas, le recomendaría usar esta biblioteca de matriz para hacerlo así:
que producirá
fuente
Puede intentar esto, pero los valores de la segunda dimensión serán iguales a los índices:
$array = array_fill_keys(range(0,5), range(0,5));
un poco más complicado para una matriz vacía:
$array = array_fill_keys(range(0, 5), array_fill_keys(range(0, 5), null));
fuente
Necesita declarar una matriz en otra matriz.
$arr = array(array(content), array(content));
Ejemplo:
$arr = array(array(1,2,3), array(4,5,6));
Para obtener el primer elemento de la matriz, usará
$arr[0][0]
, que es como el primer elemento de la primera matriz de la matriz.$arr[1][0]
devolverá el primer elemento de la segunda matriz de la matriz.fuente