Quelle est la manière la plus simple de créer un tableau 2D. J'espérais pouvoir faire quelque chose de similaire à ceci:
declare int d[0..m, 0..n]
Vous pouvez également créer un tableau associatif, ou un tableau de type «table de hachage», en spécifiant l'index du tableau.
$array = array(
0 => array(
'name' => 'John Doe',
'email' => '[email protected]'
),
1 => array(
'name' => 'Jane Doe',
'email' => '[email protected]'
),
);
Ce qui équivaut à
$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]';
Les éléments suivants sont équivalents et donnent un tableau à deux dimensions:
ou
la source
Déclarez-vous? Vous n'êtes pas obligé. Assurez-vous simplement que la variable existe:
Les tableaux sont redimensionnés dynamiquement et tentent d'écrire quoi que ce soit sur un élément non existant le crée (et crée un tableau entier si nécessaire)
Ceci est valable pour n'importe quel nombre de dimensions sans déclaration préalable.
la source
count
la bonne dimension, par exemplecount($d[1])
, à moins que je ne comprenne mal votre point?Premièrement, PHP n'a pas de tableaux multidimensionnels, il a des tableaux de tableaux.
Deuxièmement, vous pouvez écrire une fonction qui le fera:
la source
Pour une solution simple, "remplir au fur et à mesure":
$foo = array(array());
Cela vous donnera un pseudo tableau bidimensionnel flexible qui peut contenir $ foo [ n ] [ n ] où n <= ∞ (bien sûr, vous êtes limité par les contraintes habituelles de la taille de la mémoire, mais vous avez l'idée que j'espère). Cela pourrait, en théorie, être étendu pour créer autant de sous-tableaux que vous en avez besoin.
la source
Ou pour des tableaux plus grands, tous avec la même valeur:
créera un tableau
$m
by$n
avec tout défini sur$value
.la source
Autant que je sache, il n'y a pas de fonction php intégrée pour faire cela, vous devez le faire via une boucle ou via une méthode personnalisée qui appelle récursivement quelque chose comme array_fill indiqué dans la réponse par @Amber;
Je suppose que vous voulez dire créé un tableau vide mais initialisé de tableaux. Par exemple, vous voulez un résultat final comme celui ci-dessous d'un tableau de 3 tableaux :
C'est simple à utiliser du code, mais pour un tableau de taille arbitraire comme un tableau de 3 tableaux de 3 tableaux, il commence à devenir complexe à initialiser avant utilisation:
...etc...
J'ai la frustration. Ce serait bien d'avoir un moyen simple de déclarer un tableau initialisé de tableaux de n'importe quelle profondeur à utiliser sans vérifier ni lancer d'erreurs.
la source
La réponse de atli m'a vraiment aidé à comprendre cela. Voici un exemple d'itération dans un tableau à deux dimensions. Cet exemple montre comment rechercher des valeurs pour les noms connus d'un tableau et également un foreach où vous parcourez simplement tous les champs que vous y trouvez. J'espère que cela aide quelqu'un.
Les sorties:
la source
Et pour moi, l'argument de savoir si un tableau doit être clairsemé ou non dépend du contexte.
Par exemple, si $ a [6] [9] n'est pas renseigné, cela équivaut à $ a [6] [9] renseigné par exemple avec "" ou 0.
la source
pour faire écho à un seul élément du tableau, vous devez écrire:
la sortie serait:
arr1 arr2
la source
Et j'aime cette façon:
la source
Si vous voulez créer rapidement un tableau multidimensionnel pour une valeur simple en utilisant une seule doublure, je vous recommande d'utiliser cette bibliothèque de tableaux pour le faire comme ceci:
qui produira
la source
Vous pouvez essayer ceci, mais les valeurs de la deuxième dimension seront égales aux index:
$array = array_fill_keys(range(0,5), range(0,5));
un peu plus compliqué pour un tableau vide:
$array = array_fill_keys(range(0, 5), array_fill_keys(range(0, 5), null));
la source
Vous devez déclarer un tableau dans un autre tableau.
$arr = array(array(content), array(content));
Exemple:
$arr = array(array(1,2,3), array(4,5,6));
Pour obtenir le premier élément du tableau, vous utiliserez
$arr[0][0]
, c'est comme le premier élément du premier tableau du tableau.$arr[1][0]
renverra le premier élément du deuxième tableau du tableau.la source