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 :

Corriger une notice Invalid argument supplied for foreach() [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Points : 102
    Points
    102
    Par défaut Corriger une notice Invalid argument supplied for foreach()
    Bonjour,

    J'ai cette notice et ce warning pour cette ligne 152
    02-Feb-2021 11:00:28 UTC] PHP Warning: Invalid argument supplied for foreach() in /web/vhosts/f.php on line 152
    [02-Feb-2021 11:00:28 UTC] PHP Notice: Undefined offset: 0 in /srv/data/web/vhosts/f.php on line 152
    C'est dans une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    foreach($matches[0] as $match) // ligne 152
        {  
    		if (!$match = trim($match)) continue;
    			if ($snippet) $snippet .= "$match.. "; else $snippet = "$match";
    		if (mb_strlen($snippet.htmlspecialchars($match[0], ENT_QUOTES, 'UTF-8').".. ") > $strlen_max) break;
        }
    ?>
    Merci pour votre aide
    Yule

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Au vu du nom de la variable je dirais que ca vient d'une expression régulière. Donc ton tableau de $matches ne contient rien.
    Il faut que tu vérifies avant si tu as des résultats avant d'attaquer $matches[0].
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Points : 102
    Points
    102
    Par défaut
    Extra, merci bien pour cet éclairage

  4. #4
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 756
    Points : 2 987
    Points
    2 987
    Par défaut
    Bonjour

    Peux-tu poster le code qui fonctionne ? Cette question parce que foreach n'a pas lieu d'être précédé par un if count(). Si la variable utilisée ne contient rien, foreach n'est même pas exécuté.

    Il me semble que foreach($matches as $match) aurait suffit pour résoudre ton problème. La variable utilisée étant alors un array et non pas, une valeur.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  5. #5
    Membre régulier
    Homme Profil pro
    HobbyWeb
    Inscrit en
    Janvier 2005
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : HobbyWeb

    Informations forums :
    Inscription : Janvier 2005
    Messages : 183
    Points : 102
    Points
    102
    Par défaut
    Hello @cavo789,

    J'avais essayé comme tu l'expliques mais j'avais de mémoire, un message d'erreur

    Le bout de code dans cette fonction qui permet d'éviter cette problématique est le suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                          if (!empty($matches[0])) {
    			foreach($matches[0] as $match)
    				{
    				if (!$match = trim($match)) continue;
    				if ($snippet) $snippet .= "$match.. "; else $snippet = "$match";
    				if (mb_strlen($snippet.htmlspecialchars($match[0], ENT_QUOTES, 'UTF-8').".. ") > $strlen_max) break;
    				}
    			}
    Dans cette fonction, j'ai encore une notice qui s'affiche et pour laquelle je vais poster un nouveau message.. parceque cette fois, je n'arrive pas à la contourner..

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 11/12/2016, 20h20
  2. [Tableaux] Invalid argument supplied for foreach()
    Par kifouillou dans le forum Langage
    Réponses: 10
    Dernier message: 16/05/2008, 16h53
  3. [Tableaux] Invalid argument supplied for foreach
    Par Lionel57 dans le forum Langage
    Réponses: 1
    Dernier message: 20/12/2007, 13h15
  4. Invalid argument supplied for foreach()
    Par Rajhonson dans le forum Langage
    Réponses: 4
    Dernier message: 16/11/2006, 14h31
  5. Réponses: 11
    Dernier message: 19/05/2006, 11h41

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