[php array] 2 dimensions / 3 colonnes

Résolu
Edouard -  
 Edouard -
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

4 réponses

  1. A.Nonymous
     
    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')
    );
    9
    1. Edouard
       
      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.
      0
  2. Edouard
     
    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
    4
  3. A.Nonymous
     
    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
  4. Edouard
     
    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
    0