web-dev-qa-db-fra.com

Créer un tableau 2D vide en PHP?

Je sais que les tableaux sont créés dynamiquement, et les créer à l'avance n'est pas vraiment nécessaire, mais comment procéder avec un tableau 2D? De la même façon?

(for$j)
{
for($i)
    {
    $array[j][i] = "data";
    }
}

Quelque chose comme ca? Évidemment réel pour les boucles, bien sûr.

32
Joshua

À son plus simple absolu, un tableau dimensionnel 2D peut être créé comme:

<?php
    $emptyArray = array(array());
?>

Ou à partir de PHP 5.4, vous pouvez également utiliser:

<?php
    $emptyArray = [[]];
?>
47
Brendan Bullen

Vous ne créez pas un tableau 2D en PHP, pas dans le sens traditionnel.

Les suggestions ci-dessus concernant $a = array(array()); créent en fait simplement le tableau suivant:

$a = array(
    0 => array( )
);

Par conséquent, $a[0][0] = 'test'; Entraînerait ce qui suit:

$a = array(
    0 => array(
        0 => 'test'
    )
);

À première vue, il semble que cela fonctionne, mais en fait, ce n'est toujours pas un tableau 2D. Lorsque vous essayez d'utiliser la 2e ligne (index 1), à ce stade, PHP lancerait un avis. Par exemple:

$a[1][0] = 'test2';

En effet, $a[1] Ne contient rien (rappelez-vous que array(array()) crée simplement un tableau à l'index 0?).

Pour que cela fonctionne, vous devez encore une fois faire $a[1] = array();, ou si vous voulez éviter les indices, vous pouvez le faire, $a[] = array();.


Exemple

$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();
    }
}

Le code ci-dessus crée un "tableau 2d" 5x3 de nombres aléatoires.

21
Christian

Le documentation PHP est toujours un bon moyen de commencer pour ce genre de questions de base.

<?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
?>
3
Henrik P. Hessel

Si je veux créer un tableau vide pour gérer les lignes des fichiers texte, j'utilise simplement $ array = array ();

2
Adrian Kentleton

Pourriez-vous préciser ce que vous essayez de faire? Vous pouvez parcourir des tableaux multidimensionnels avec la fonction foreach

$ary=array( "subarr" => array("foo","bar") );

foreach($ary as $a){
  foreach($a as $ary_sub){
    echo $ary_sub;
  }
}

ou

foreach($ary["subarr"] as $key=>$subval){
 echo $subval;
}
2
Christian Smorra

L'utilisation de "array (array ())" créera un tableau 2D avec un élément "vide" en première position. Pour créer un tableau 2D vraiment vierge, cela doit être supprimé.

<?php
    $emptyArray = array(array());  // Creates a 2D array with one empty element in $emptyArray[0]
    array_pop($emptyArray);        // Pops element[0] off the array
?>
2
Ivanda Nothabeer
// 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/>";
}
1
Samcoder

N'oubliez pas que chaque fois que vous utilisez la fonction imbriquée array(array()) ou la syntaxe de tableau court [[]], Les deux créent un tableau 2D avec un élément empty en première position. Cela peut vous apporter des erreurs, nous devons donc le supprimer.

Comment supprimer un élément empty?

Eh bien, il est absolument simple d'appeler la méthode array_pop() pour faire sortir le element[0] Du tableau, comme ceci:

<?php
    $a = array(array());
    echo 'Before removing the empty element: \n'
    print_r($a);
    array_pop($a);
    print_r($a);

    $b = [[]];
    echo 'Before removing the empty element: \n'
    print_r($b);
    array_pop($b);
    print_r($b);
?>
0
Teocci