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 :

Undefined offset sur PHP 7.2 [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut Undefined offset sur PHP 7.2
    Bonjour à tous,

    Suite à un upgrade vers 7.2 j'ai maintenant une erreur fatale pour un undefined offset dans un tableau (objet) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    					$comps = Pack::getItems($row['product_id'], 1); // retourne un objet
    					foreach($comps as $comp){
     
    						$qte_vente_comp = $nb_vente_pack * $comp->pack_quantity;
     
    						$sales_comp[$comp->id] += $qte_vente_comp;
     
    					}
    La variable $comp->id contient des codes produits numériques qui peuvent être 72, 120, 230, 1240 etc...
    Tout allait bien avant ce changement de PHP, du coup je ne sais plus comment contourner cette erreur devenue fatale.

    Merci de votre aide.

  2. #2
    Membre confirmé Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Points : 492
    Points
    492
    Par défaut
    Salut, l'erreur n'a rien à voir avec la version de PHP.
    C'est très étonnant que tu n'aies pas eu d'erreur avant.

    Avec ce code,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sales_comp[$comp->id] += $qte_vente_comp;
    Si on traduit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sales_comp[$comp->id] = $sales_comp[$comp->id] + $qte_vente_comp;
    C'est logique que tu soulèves une erreur.
    Tu essaies d'ajouter une valeur à une variable qui n'existe pas à priori (A moins que tu aies défini $sales_comp[offset] quelque part mais on ne voit pas le code ici).

  3. #3
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Bonjour, en fait avant la boucle j'ai simplement déclaré le tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $sales_comp = array();

  4. #4
    Membre confirmé Avatar de ma5t3r
    Homme Profil pro
    Développeur freelance
    Inscrit en
    Mai 2015
    Messages
    320
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 320
    Points : 492
    Points
    492
    Par défaut
    J'ai l'impression que tu cherches à faire un simple total, me trompé-je ?

    Dans ce cas, il vaut mieux ne pas utiliser un tableau mais incrémenter la valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $sales_comp = 0;
    foreach($comps as $comp){ 
        $qte_vente_comp = $nb_vente_pack * $comp->pack_quantity;
        $sales_comp += $qte_vente_comp;
    }
    echo "Total = $sales_comp";

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    juste vérifier que ton tableau contient l'index pour lequel tu souhaites additionner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $comps = Pack::getItems($row['product_id'], 1); // retourne un objet
            $sales_comp = array();
            foreach($comps as $comp){
     
                $qte_vente_comp = $nb_vente_pack * $comp->pack_quantity;
     
                if( isset($sales_comp[$comp->id]) )
                    $sales_comp[$comp->id] += $qte_vente_comp;
                else
                    $sales_comp[$comp->id] = $qte_vente_comp;
            }

  6. #6
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Citation Envoyé par ma5t3r Voir le message
    J'ai l'impression que tu cherches à faire un simple total, me trompé-je ?

    Dans ce cas, il vaut mieux ne pas utiliser un tableau mais incrémenter la valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $sales_comp = 0;
    foreach($comps as $comp){ 
        $qte_vente_comp = $nb_vente_pack * $comp->pack_quantity;
        $sales_comp += $qte_vente_comp;
    }
    echo "Total = $sales_comp";
    En fait si, j'ai besoin d'un tableau puisque je veux associer un code produit à des qtés vendues. Mais Armel18 vient de me donner la soluce et je te remercie de t'être penché sur ma question. Bonne soirée.

  7. #7
    Membre averti Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Points : 436
    Points
    436
    Par défaut
    Citation Envoyé par armel18 Voir le message
    juste vérifier que ton tableau contient l'index pour lequel tu souhaites additionner
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $comps = Pack::getItems($row['product_id'], 1); // retourne un objet
            $sales_comp = array();
            foreach($comps as $comp){
     
                $qte_vente_comp = $nb_vente_pack * $comp->pack_quantity;
     
                if( isset($sales_comp[$comp->id]) )
                    $sales_comp[$comp->id] += $qte_vente_comp;
                else
                    $sales_comp[$comp->id] = $qte_vente_comp;
            }
    Merci beaucoup, Armel18 ça fonctionne parfaitement.
    Bonne soirée !

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

Discussions similaires

  1. [MySQL] Problème message PHP / Undefined offset
    Par lemzo84 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 09/11/2011, 13h40
  2. undefined offset en php
    Par zabdaniel dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2008, 10h10
  3. Réponses: 1
    Dernier message: 28/01/2008, 16h33
  4. [PHP-JS] Undefined offset > Incompréhensible <
    Par JmL40 dans le forum Langage
    Réponses: 3
    Dernier message: 29/06/2007, 16h11

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