IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Nombre d'éléments d'un tableau 2 dim


Sujet :

Langage PHP

  1. #1
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 595
    Points : 879
    Points
    879
    Par défaut Nombre d'éléments d'un tableau 2 dim
    Bonjour.
    Si count() donne bien le nombre d'éléments d'un tableau à une dimension, ce n'est pas le cas pour un tableau ligne colonne pour lequel il renvoie le nombre de lignes...
    L'ajout de COUNT_RECURSIVE ne résout que partiellement la question puisque count renvoie la somme du nb de ligne et du nombre d'éléments 🤔
    Par exemple pour un tableau 2 lignes 3 colonnes :
    count seul : 2
    count avec COUNT_RECURSIVE : 8

    Quelqu'un connait-il une solution plus élégante que de soustraire les 2 count pour obtenir le nb d'éléments d'un tableau bidimensionnel ou, c'est la même question en fait, le nb de lignes ET de colonnes de ce type de tableau ?
    Au pire, count(array_flip()) ...

    Yves
    Participez vous aussi !
    Message utile
    Discussion résolue

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    il n'y a pas de fonction en php qui fasse cela.
    Et si tu fais juste la soustraction tu vas tomber sur un os : regarde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $x = [[1, 2, 3], [4, 5, [6, 7, 8 , [9, 10, 11, 12, 13]]]];
     
    $nb = count($x, COUNT_RECURSIVE) - count($x); // $nb = 15
     
    $nb = 0;
    array_walk_recursive($x, function($x, $k) use (&$nb) { ++$nb; }); // $nb = 13

  3. #3
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    595
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 595
    Points : 879
    Points
    879
    Par défaut
    Salut.
    Tout a fait juste.
    J'avais un non-dit réducteur (tableau matriciel m×n d'items n'étant pas eux-mêmes des tableaux) qui simplifiait grandement la problématique. Bien vu la récursive sur les éléments du tableau et le passage en référence. Ça c'est élégant !
    Merci
    Participez vous aussi !
    Message utile
    Discussion résolue

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Bah si c'est une matrice 2d:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nb = count($x)*count($x[0]);
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    @CosmoKnacki : ça ne fonctionne que si tous les 2e niveaux ont le même nombre d'éléments (je suppose que c'est ce que tu veux dire par "matrice 2d", mais mes notions de calcul matriciel sont assez profondément enfouies dans ma mémoire )
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    Citation Envoyé par Celira Voir le message
    @CosmoKnacki : ça ne fonctionne que si tous les 2e niveaux ont le même nombre d'éléments (je suppose que c'est ce que tu veux dire par "matrice 2d", mais mes notions de calcul matriciel sont assez profondément enfouies dans ma mémoire )
    Oui, c'est exactement ça, je faisais référence au dernier message de @ypcman:
    ... tableau matriciel m×n d'items n'étant pas eux-mêmes des tableaux ...
    Ne t'inquiète pas, écrire matrice 2d n'a pas de sens (ou du moins pas celui que je voulais), une matrice est un tableau à deux dimensions et c'est marre. Aprés rafraichissement de ma mémoire: on désigne par matrice 2d ou 3d des matrices carrées de dimension 2x2 ou 3x3.
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compter nombre d'éléments avec valeur X dans un formulaire
    Par p0Kep0K dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/11/2005, 15h49
  2. Nombre d'élément d'un tableau
    Par barok dans le forum Flash
    Réponses: 3
    Dernier message: 10/10/2005, 20h02
  3. Réponses: 3
    Dernier message: 04/10/2005, 15h13
  4. Compter le nombre d'élément dans un tableau
    Par cryptorchild dans le forum Langage
    Réponses: 6
    Dernier message: 08/07/2005, 13h01
  5. Comparaison de base et calculs du nombre d'éléments dans Bas
    Par BXDSPORT dans le forum Bases de données
    Réponses: 3
    Dernier message: 19/07/2004, 08h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo