Récupération des données - Page 2

Résolu
Précédent
  • 1
  • 2
  1. LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   32
     

    Bonjour je me permet de revenir une fois vers toi, toujours pour le même soucis. Peux tu me dire comment résoudre cette erreur s'il te plait, peut-être que cela va m'aider à solutionner mon problème. je te remercie.

    Notice: Array to string conversion in C:

    Je crois comprendre que j’essaye d'afficher une chaine de caractère alors que c'est un tableau ?

    Merci

    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      Il s'agit, en effet, d'un avertissement, qui te prévient que tu essaies de convertir un tableau en une chaîne de caractères.

      0
  2. LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   32
     

    Peux tu me donner un conseil pour pouvoir résoudre se problème s'il te plait.

    Merci

    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      Moi je commencerais par faire des var_dump() des variables impliquées dans l'instruction qui cause cet avertissement.

      0
  3. LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   32
     

    Bonjour petit bout de code où j'ai fait les var_dump sur mes 3 variables concernées.

                    if (!empty($indice) && (is_array($indice)  || is_object($indice))) {
                        echo "la variable indice ne contient pas la bonne valeur ?";
                        $idnum = 1;
                        $thisrec = 0;
                    } else {
                        $idnum = ($indice/1) ? 0 : 1;
                        var_dump($indice);
                        var_dump($champs);
                        var_dump($idnum);
                        $thisrec = !empty($donnees->$champs) && is_array($donnees->$champs) && $indice == $donnees->$champs[$idnum] ? 1 : 0 ;
                    }

    Voici le retour.

    Notice: Array to string conversion in C:\wamp64\www\gestion\libs\class.liste.php on line 10
    
    C:\wamp64\www\gestion\libs\class.liste.php:7:string '14' (length=2)
    
    C:\wamp64\www\gestion\libs\class.liste.php:8:
    array (size=3)
      0 => string 'idaut' (length=5)
      1 => string 'nom' (length=3)
      2 => string 'prenom' (length=6)
    
    C:\wamp64\www\gestion\libs\class.liste.php:9:int 0
    
    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 833
       

      @yg_be  au cas où, pour t'aider à lui répondre .. voici  ce que je lui ai déjà indiqué à plusieurs reprises

       Ceci devrait t'aider à convertir ton code en > php7 (du moins pour cette partie)

      https://www.php.net/manual/en/migration70.incompatible.php#migration70.incompatible.variable-handling.indirect

      Décents jusqu'au chapitre : Changes to the handling of indirect variables, properties, and methods

      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         

        @jordane45 Il reste $donnees->$champs, je peine à comprendre ce que cela faisait dans la version antérieure de php.

        0
      2. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 833 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         

        justement...   c'est bien là son souci... ( les accolades/parenthèses indiquant a quel "ensemble" s'applique l'array )

        $foo->$bar['baz']	
        
        //en php 5
        $foo->{$bar['baz']}	
        
        
        //en php 8
        ($foo->$bar)['baz']
        0
      3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         

        Oui, cela peut résoudre $donnees->$champs[$idnum].

        Mais en ce qui concerne is_array($donnees->$champs), je peine à comprendre ce que cela faisait dans la version antérieure de php.

        0
      4. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 833 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         

        Ça c'est un ajout qui a été fait pour PHP 8

        0
  4. LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   32
     

    Bonjour, j'ai bien pris connaissance du lien en français en ce qui concerne "$donnees->$champs[$idnum]" à propos des accolades /parenthése mais je n'ai pas réussi à résoudre mon problème.

    Expression 	Interprétation PHP 5 	Interprétation PHP 7
    $$foo['bar']['baz'] 	${$foo['bar']['baz']} 	($$foo)['bar']['baz']
    $foo->$bar['baz'] 	$foo->{$bar['baz']} 	($foo->$bar)['baz']
    $foo->$bar['baz']() 	$foo->{$bar['baz']}() 	($foo->$bar)['baz']()
    Foo::$bar['baz']() 	Foo::{$bar['baz']}() 	(Foo::$bar)['baz']()

    non is_array($donnees->$champs) n'était pas dans la version antérieure...

    $thisrec = !empty($donnees->$champs) && is_array($donnees->$champs) && $indice == ($donnees->$champs)[$idnum] ? 1 : 0 ;
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      montre alors le code de la version antérieure.

      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      Je suis surpris: tu as mis les parenthèses au mauvais endroit.  que penses-tu de ceci:

      $donnees->($champs[$idnum])

      0
      1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 833 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         

        Sûrement mieux avec des accolades

        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   32
     

    voici le code de la version antérieure qui fonctionne.

    if($indice/1) { $idnum = 0; } else { $idnum = 1; }
    if($indice == $donnees->$champs[$idnum]) { $thisrec = 1; } else { $thisrec = 0; }

    cela me renvoie une erreur

    Parse error: syntax error, unexpected '(', expecting identifier (T_STRING) or variable (T_VARIABLE) or '{' or '$' in C:\wamp64\www\gestion\libs\class.liste.php on line 233
                    if (!empty($indice) && (is_array($indice)  || is_object($indice))) {
                        echo "la variable indice ne contient pas la bonne valeur ?";
                        $idnum = 1;
                        $thisrec = 0;
                    } else {
                        $idnum = ($indice/1) ? 0 : 1;
                        var_dump($indice);
                        var_dump($champs);
                        var_dump($idnum);
                        $thisrec = !empty($donnees->$champs) && is_array($donnees->$champs) && $indice == $donnees->($champs[$idnum]) ? 1 : 0 ;
                    }

    je te remercie

    0
  7. LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   32
     

    toujours pas de résultat, même avec les accolades.

    if (!empty($indice) && (is_array($indice)  || is_object($indice))) {
    echo "la variable indice ne contient pas la bonne valeur ?";
    $idnum = 1;
    $thisrec = 0;
    } else {
    $idnum = ($indice/1) ? 0 : 1;
    var_dump($indice);
    var_dump($champs);
    var_dump($idnum);
    $thisrec = !empty($donnees->$champs) 
    && is_array($donnees->$champs) 
    && $indice == 
    $donnees->{$champs[$idnum]} ? 1 : 0 ;
                    }

    toujours la même erreur concerne la ligne 10

    Notice: Array to string conversion in C:
    0
  8. LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   32
     

    Je viens peut-être de trouver la solution je fais des vérification et vous redis...

    0
  9. LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   32
     

    Je suis content je vous remercie je n'aurai jamais trouvé à propos des accolades. MERCI

    au lieu de

    $thisrec = !empty($donnees->$champs) && is_array($donnees->$champs) && $indice == $donnees->{$champs[$idnum]} ? 1 : 0 ;

    c'est cela

    $thisrec = $indice == $donnees->{$champs[$idnum]} ? 1 : 0 ;
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      peux-tu alors marquer la discussion comme résolue?

      0
  10. LaChaux78 Messages postés 585 Date d'inscription   Statut Membre Dernière intervention   32
     

    C'est fait encore Merci

    0
Précédent
  • 1
  • 2