8791 sujets

Développement web côté serveur, CMS

Modérateur
Salut,

J'ai bien saisie les tableaux associatifs, tableaux scalaires (je ne sais pas si j'utilise le bon terme) et à quoi il peuvent servir. Mais je me pose deux questions :

Qu'est ce que c'est au juste ? À quoi serve t'il et dans quel cas ?

@+ et merci de me donner quelques renseignements saisissants.
Alors pour ma part je peux dire qu'il existe 2 sortes de tableaux en programmation :
* les tableaux associatifs
* les tableaux indéxés

Quels sont les différences ?

Pour etre plus parlant voici 2 exemples :

Tableau indéxé (à une dimension) :

montableau[0] = "oncle"
montableau[1] = "Bens"
montableau[1] = "24"

Tableau associatif (à une dimension) :

montableau["prenom"] = "oncle"
montableau["nom"] = "Bens"
montableau["age"] = "24"


Un tableau associatif est un tableau dont l’index est une chaîne de caractère au lieu d’un nombre. On parle aussi de "hash array" ou "hash". Il se déclare comme un tableau traditionnel, la distinction se fait lors de l’affectation.

Après chaque cas est différent. Tout dépend du context dans lequel tu veux te servir de ton tableau. A toi d'adapté le style de tableau en fonction.

Dans le cas d'un tableau qui repertorie par exemple le prénom de tout les élèves d'une classe, un tablea indéxé suffirait.
Par contre, comme dans l'exemple cité plus haut si tu veux mémoriser les infos d'une personnes il sera plus judicieu de nommer les colonnes de ton tabelau avec une chaine de caractère pour etre plus parlant. Ton tableau sera donc associatif !

A chaque cas son tableau ! Smiley biggrin

Après rien ne t'empeche d'avoir les 2 en même temps ! Smiley biggol

Ex :

Eleve 1

montableau[0]["prenom"] = "Julien"
montableau[0]["nom"] = "Dupond"
montableau[0]["age"] = "15"


Eleve 2

montableau[1]["prenom"] = "Eric"
montableau[1]["nom"] = "Durand"
montableau[1]["age"] = "16"


Je pense que cette exemple est déjà un petit début de réponse ! Smiley cligne
Modifié par Cocci_uk (15 Nov 2007 - 17:54)
Modérateur
Merci pour ta précieuse réponse mais cela ne répond pas trop à ce type de tableau (un array dans un array) :


$ma_musique=array("jazz"=>array("Miles","Bird")"rock"=>array("U2","Pink Floyd")"trip hop"=>array("massive attack","Portishead"));


Ce type de tableau existe mais je ne comprends pas trop le pourquoi du comment ?

@+ et merci encore de ta réponse qui me conforte puisque je suis en pleine "potassion"

PS : Le but au final est comprendre bien sûr mais savoir également comment parcourir ce genre de tableau. J'ai essayé foreach couplé d'un while. Rien ne sort de vraiment bon. Mais bon je ne suis pas encore un crack en php.
en fait c'est pareil sauf que c'est une façon differente de l'écrire, par exemple pour ton tableau tu pourrais faire :

$ma_musique['jazz'][0] = 'Miles'
$ma_musique['jazz'][1] = 'Bird'
$ma_musique['rock'][0] = 'Pink Floyd'

entre crochet c'est l'index, cela peut-être un numero ou un mot cela dépend d ce que tu veux faire, si tu veux pouvoir chercher selon un ordre numerique alors il vaut mieux mettre un numero sinon il vaut mieux mettre un mot.

Par contre pour les tableaux a deux niveaux pour les parcourrir il faut faire des foreach imbriqué


(foreach $ma_musique as $musique){
   (foreach $musique as $artiste){
      echo $artiste
  }
}


ou alors appeler l'index dans e foreach :


(foreach $ma_musique as $musique){
    echo $musique[0]
}


en fait il faut tester plein de combinaisons avec la doc php foreach ou while, enfin moi c'est ce que je fait pour apprendre peu à peu les subtilités
matmat à répondu à ton cas précis.

Tu peux faire un truc de ce genre (j'ai pas tester mais ca devrait fonctionner)



foreach ($ma_musique as $styles_musicales => $artistes)
{

    echo "<h1>" . $styles_musicales . "</h1>";

    foreach ($artistes as $cle => $artiste)
    {
        echo "<p> * " . artiste . "</p>";
    }
}


Ce code devrait afficher un truc dans ce stye :

JAZZ
* Miles
* Bird
ROCK
* U2
* Pink Floyd

Etc....

Voili Voilou Smiley cligne