[php array] 2 dimensions / 3 colonnes [Résolu/Fermé]

Edouard - 22 juil. 2007 à 20:41 - Dernière réponse :  Edouard
- 24 juil. 2007 à 18:29
Bonjour,

je voudrais faire un tableau php à deux dimensions avec trois colonnes : clé, value1, value2.
$a = array(1=>'value1','2'=>'Second'); (comme ça mais avec deux valeurs liées à la clé)
Est ce possible et si oui comment ?

Ensuite si j'ai un tableau de ce type :
1 | tom | moto
2 | tom | voiture
3 | yoan | moto

Est ce que je peux faire la somme selon une des colones value ?
exemple somme 'moto' = 2...

Merci

Edouard
Afficher la suite 

5 réponses

A.Nonymous - 22 juil. 2007 à 23:55
+9
Utile
1
Impossible directement.
Choix de replis
- 2 tableaux avec même indexation
prim = array( 1=>'tom',2=>'tom',3=>'yoan');
seco = array( 1=>'moto',2=>'voiture',3=>'moto');

- 1 tableau contenant des sous-tableaux
prim = array(
1=> array('tom','moto'), 2=>array('tom','voiture'), 3=>array('yoan','moto')
);
Cette réponse vous a-t-elle aidé ?  
Très clair. Merci.

Sinon, existe-t-il une fonction pour comptabiliser le nombre d'enregistrements similaires dans mon tableau ? un peu comme un count sql ?

par exemple 2 pour tom ou pour moto.
+4
Utile
Salut,

Pour ce qui passeraient par là, voici les solutions adoptées :

2 tableaux à 2 dimensions.

Pour éviter de compter et de faire un select distinct j'ai inversé les clé et valeurs :

les données importantes sont stockées comme clé et à chaque occurence, j'incrémente la valeur de 1.
-> chaque clé est unique (remplace le select distinct)
-> j'aditionne au fur et à mesure (pas de count)

if (array_key_exists($key, $tableau1)) {
// cette clé est déjà présente dans le tableau
// on incrément sa valeur de 1
$tableau1[$key] += 1;
} //fin if
// si le tableau ne contient pas cette clé
else {
$tableau1[$key] = 1;
} // fin else

Ensuite pour présenter mes données par ordre d'importance j'ai utilisé cette fonction :

arsort($tableau1);
foreach($tableau1as $key=> $value){
echo "$key ($value)<br />";
} // fin foreach

Merci pour l'aide et à plus.

Edouard
www.promete.fr
A.Nonymous - 24 juil. 2007 à 10:11
0
Utile
count(array_values($array))

Mais si ça doit être appliqué au cas présenté:
cas des 2 tableaux: 2,2

cas du tableau contenant des sous-tableaux: 3
0
Utile
Bonjour,

Merci pour la fonction count.

A priori je m'orient vers 2 tableaux à 2 dimensions (key autoincrémentée et value string).

Donc la solution du count me semble bonne.

Par contre existe-t-il une autre fonction qui fassse l'équivalent de select distinct (sql) pour isoler toutes les values identiques ? (et ensuite dénombrer avec count combien de fois on les retrouve) ?

Merci encore

Edouard