CommentCaMarche
Recherche
Posez votre question Signaler

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

Edouard - Dernière réponse le 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
Lire la suite 
Réponse
+9
moins plus
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')
);
Edouard- 23 juil. 2007 à 08:56
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.
Répondre
Ajouter un commentaire
Réponse
+4
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé «  [php array] 2 dimensions / 3 colonnes  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.