2010-10-11 3 views
2

J'apprends php. En dépit de tant d'exemples sur google, je suis toujours confus au sujet de l'implémentation de tableaux bidimensionnels et tridimensionnels. Quelqu'un peut-il expliquer, en termes simples, avec un exemple s'il vous plaît?Je suis tellement confondu avec les tableaux associatifs en php (deux et 3 dimensions)

+3

Essayez d'éviter de ramasser des morceaux aléatoires de PHP à partir de recherches Google. Vous trouverez que votre base de connaissances manque un peu. Au lieu de cela, consultez ce guide PHP: http://www.tuxradar.com/practicalphp. En particulier, la section sur les tableaux: http://www.tuxradar.com/practicalphp/5/0/0 – treeface

+1

@treeface: Je suis d'accord. Après avoir pataugé sur Google, j'ai finalement trouvé ce livre et commencé à explorer, et j'ai commencé à profiter de PHP. C'est le meilleur livre PHP que j'ai trouvé, de loin. @ user472625: S'asseoir et parcourir un livre complet comme celui-ci vous permettra de bien comprendre les bases et de les utiliser. Et c'est beaucoup plus amusant parce que vous pouvez suivre vos propres progrès. La lecture d'un tas de sites aléatoires vous laissera confus, mais en parcourant une série de chapitres écrits par le même enseignant (expérimenté), vous aurez une compréhension cohérente sur laquelle vous pourrez vous appuyer plus tard. –

+0

@Matt Ball: En PHP, tous les tableaux sont associatifs. Faire 'array (" foo "," bar "," baz ")' est le même que 'array (0 =>" foo ", 1 =>" bar ", 2 =>" baz ")'. Dans le premier exemple, PHP attribue juste les clés pour vous. –

Répondre

1

Il existe également un moyen très simple de commencer avec des tableaux multidimensionnels. Prenez simplement une feuille et un crayon et commencez à écrire votre tableau multidimensionnel sur papier d'abord. Cela vous aidera beaucoup au début.

Cela devrait ressembler à ceci.

ARRAY0 { 
     key0.0 => "value0.0", 
     key0.1 => "value0.1", 
     key0.2 => ARRAY1 { 
          key1.0 => "value1.0", 
          key1.1 => ARRAY2 { 
              key2.0 => "value2.0", 
              key2.1 => "value2.1", 
            }, 
          key1.2 => "value1.2", 
        }, 
     key0.3 => "value0.3", 
}; 

Ceci est juste ma façon de visualiser les tableaux, vous pouvez créer votre propre syntaxe si vous le souhaitez.

3

Ce sont des tableaux qui sont imbriqués dans d'autres tableaux. Selon la profondeur de leur imbrication, ils déterminent leur dimension.

Voici un exemple de tableau 1D et 2D, respectivement.

$arr = 
array(
    'item1' => 543, 
    654 => true, 
    'xas' => 0.54 
); 
// Accessing $arr[654] (returns true) 
$arr2 = array(
    array 
    (
     'a' => 54, 
     'b' => 'Hello' 
    ), 
    array 
    (
     'itemx' => true, 
     954 => 'hello' 
    ) 
); 
// Accessing $arr[0]['b'] (equal to 'Hello') 

Pour un tableau 3D, vous suffit d'ajouter un autre tableau imbriqué dans l'un des éléments du tableau 2e niveau dans l'exemple de tableau 2D.

7

L'exemple le plus simple pour moi était de penser à une table SQL en tant que tableau multidimensionnel.

Le tableau pourrait ressembler à ceci:

ID | Name | Email 
-------------------------- 
1 | John | [email protected] 
2 | Jane | [email protected] 

Et le tableau pourrait ressembler à ceci:

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => John 
      [2] => [email protected] 
     ) 

    [1] => Array 
     (
      [0] => 2 
      [1] => Jane 
      [2] => [email protected] 
     ) 

) 

Le tableau est transformé en un tableau de tableaux. Où chaque ligne est accédée par le premier index et chaque colonne par le deuxième index.

Donc, si je voulais "Jane" J'utiliserait $ array [1] [1]

Un tableau associatif de cette même table pourrait ressembler à ceci:

Array 
(
    [0] => Array 
     (
      [ID] => 1 
      [Name] => John 
      [Email] => [email protected] 
     ) 

    [1] => Array 
     (
      [ID] => 2 
      [Name] => Jane 
      [Email] => [email protected] 
     ) 

) 

Vous accéderiez "Jane" like $ array [1] ["Nom"]

+0

Vous pouvez ajouter un exemple pour les tableaux associatifs en utilisant le même "exemple de table" pour donner plus de détails. –

+0

Bonne idée, c'est fait. Merci. – rocketeerbkw

+0

Super one ... merci – user472625

1

Un tableau peut contenir n'importe quoi, d'un entier à une chaîne, à un objet complet, à un autre tableau.

Tout tableau à lui seul est appelé un tableau à une dimension. Si vous considérez cela comme une rangée de boîtes, alors c'est une seule rangée. Si un tableau a un autre tableau, alors c'est un tableau à deux dimensions: une de ses boîtes sera une colonne, en ajoutant une autre dimension.

$users = array() ; 

$jim = array('Jim', 'Smith') ; 

$users[] = $jim ; 

//or in one step 
$users = array(array('Jim', 'Smith')) ; 

//then to access the first user: 
$jim = $users[0]; 

//and his firstname: 
$jimsname = $users[0][0] ; 
//or 
$jimsname = $jim[0] ; 

Vous pouvez accéder à des éléments du tableau et ses tableaux imbriqués par des indices, mais vous devez vous rappeler quel index numérique correspond à quelle information. C'est là que vous pouvez utiliser associatifs tableaux, où les indices numériques sont remplacés par des chaînes descriptives uniques:

$users = array() ; 

$jim = array(
    'firstname' => 'Jim', 
    'lastname' => 'Smith' 
) ; 

$users['jim'] = $jim ; 

//then to access jim: 
$jim = $users['jim']; 

//and his firstname: 
$jimsname = $users['jim']['firstname'] ; 
//or 
$jimsname = $jim['firstname'] ; 

C'est à peu près tout. Vous pouvez voir plus here et en

0

Essayez ceci simplement.

$anArray['abc'][1]['qwe']='this is a value'; 
$anArray['abc']['avs']='another value'; 

echo $anArray['abc'][1]['qwe']; 
echo $anArray['abc']['avs']; 

/*

tableau est un peu différent en PHP. Vous pouvez considérer les éléments du tableau comme des variables simples ($ anArray ['abc'] [1] ['qwe'] ou $ anArray ['abc'] ['avs']). Et vous pouvez les créer comme des variables uniques. Ceci est un ajout aux tableaux conventionnels. La manière conventionnelle est également soutenue.

Mais qu'advient-il si vous écrivez: $anArray['abc']='something else';

$anArray['abc'] est juste une variable de chaîne de ce point. Donc vous ne pouvez pas (ou ne peut pas comme je ne l'ai pas encore testé et pratiquement tout est possible) accéder à $anArray['abc'][1]['qwe'] plus.

Donc, essayez de penser les éléments comme les variables, d'abord;)

*/

Questions connexes