Signaler

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

Posez votre question 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
Afficher la suite 
Utile
+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
Utile
+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
Utile
+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
Utile
+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

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.

Vous n'êtes pas encore membre ?

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