98 votes

Comment déclarer un tableau à deux dimensions le plus facilement en PHP?

Comme :

 declare int d[0..m, 0..n]
 

89voto

Atli Points 4288

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' => 'john@example.com'
    ),
    1 => array(
        'name' => 'Jane Doe',
        'email' => 'jane@example.com'
    ),
);
 

Qui est équivalent à

 $array = array();

$array[0] = array();
$array[0]['name'] = 'John Doe';
$array[0]['email'] = 'john@example.com';

$array[1] = array();
$array[1]['name'] = 'Jane Doe';
$array[1]['email'] = 'jane@example.com';
 

68voto

David Caunt Points 30636

Les éléments suivants sont équivalents et donnent lieu à un tableau à deux dimensions:

 $array = array(
    array(0, 1, 2),
    array(3, 4, 5),
);
 

ou

 $array = array();

$array[] = array(0, 1, 2);
$array[] = array(3, 4, 5);
 

45voto

porneL Points 42805

Juste déclarer? Tu n'es pas obligé. Assurez-vous simplement que la variable existe:

 $d = array();
 

Les tableaux sont redimensionnés dynamiquement et toute tentative d'écriture sur un élément non-exsistant le crée (et crée un tableau entier si nécessaire)

 $d[1][2] = 3;
 

Ceci est valable pour un nombre quelconque de dimensions sans déclaration préalable.

29voto

cletus Points 276888

Premièrement, PHP n'a pas de tableaux multidimensionnels, mais des tableaux de tableaux.

Deuxièmement, vous pouvez écrire une fonction qui le fera:

 function declare($m, $n, $value = 0) {
  return array_fill(0, $m, array_fill(0, $n, $value));
}
 

13voto

Kingsolmn Points 828

Pour une solution simple, "remplissez au fur et à mesure":

$foo = array(array());

Cela vous donnera un pseudo tableau flexible à deux dimensions pouvant contenir $ foo [ n ] [ n ] où n <= ∞ (bien sûr, votre limite par les contraintes habituelles de la taille de la mémoire, mais vous obtenez l'idée que j'espère). En théorie, cela pourrait être étendu pour créer autant de sous-réseaux que nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X