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 :

Trouver la valeur dans un tableau (array) : Illegal string offset [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut Trouver la valeur dans un tableau (array) : Illegal string offset
    Bonjour,
    J'ai un array qui contient les identifications de certains utilisateurs.
    J'ai les informations sur l'adresse et le nom de la famille d'un utilisateur et il faut que je le trouve son ID.
    J'ai commencé par une boucle [foreach], mais j'ai bloqué par un message d'erreur.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     error_reporting(E_ALL);
    ini_set("display_errors", 1);
     
    $dataIdentity = [
        [
            "Id"  => 125,
            "LastName" => "tata",
            "Street" => "Adlershof",
            "City" => "Berlin",
            "CodePostal" => "10623",
            "Country" => "Allemagne"
        ],
        [
            "Id"  => 258,
            "LastName" => "tata",
            "Street" => "st-denis",
            "City" => "paris",
            "CodePostal" => "75000",
            "Country" => "France"
        ],
        [
            "Id"  => 859,
            "LastName" => "TOPO",
            "Street" => "st-paul",
            "City" => "paris",
            "CodePostal" => "75000",
            "Country" => "France"
        ],
        [
            "Id"  => 159,
            "LastName" => "tata",
            "Street" => "st-paul",
            "City" => "paris",
            "CodePostal" => "75000",
            "Country" => "France"
        ]
    ];
     
    $countrySearche = "France";
    $codePostalSearche = "75000";
    $citySearche = "paris";
    $streetSearche = "st-denis";
    $lastNameSearche = "tata";
     
     
    //trouver la bon array
    foreach ($dataIdentity as $keyCountry => $value) {
        if ($value["Country"] === $countrySearche) {
           echo "<p>" . $keyCountry . "</p>";
     
        foreach ($dataIdentity[$keyCountry] as $keyCodePostal => $valueCodePostal) {
            if ($valueCodePostal["CodePostal"] === $codePostalSearche) {
            echo "<p>" . $keyCodePostal . "</p>";
     
     
     
     
     
            }//CodePostal
        }//CodePostal
     
     
     
     
        }//Country
    }
     
    // trouver le bon id
    $searcheID;
     
     
     
     
     
     
    die("wwwww");
    et voici le message d'erreur :
    Warning: Illegal string offset 'CodePostal' in C:\sites\test\scripts\array_value_find.php on line 52
    voici la ligne 52 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if ($valueCodePostal["CodePostal"] === $codePostalSearche) {
    Est-ce que vous pouvez m'aider pour corriger cette erreur.

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 252
    Points : 358
    Points
    358
    Par défaut
    Il ne faut pas lancer une boucle pour chaque vérifications, une seule suffit. C'est à dire qu'on va vérifier pour chaque utilisateurs si les valeurs correspondent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //trouver la bon array
    foreach ($dataIdentity as $user) {
        if ($user["Country"] === $countrySearche && $user["CodePostal"]===$codePostalSearche /*etc...*/) {
           echo "<p>ID : " . $user["Id"] . "</p>";
        }
    }

  3. #3
    Membre habitué
    Homme Profil pro
    Aprenti
    Inscrit en
    Mai 2015
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Aprenti

    Informations forums :
    Inscription : Mai 2015
    Messages : 199
    Points : 140
    Points
    140
    Par défaut
    Bonjour Numew ,
    Citation Envoyé par numew Voir le message
    Il ne faut pas lancer une boucle pour chaque vérifications, une seule suffit. C'est à dire qu'on va vérifier pour chaque utilisateurs si les valeurs correspondent :
    Excellente solution, un grand merci.

    Ça marche.
    Bonne journée

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/12/2012, 17h42
  2. Réponses: 2
    Dernier message: 18/11/2012, 11h25
  3. [find] Trouver des valeurs dans un tableau de cellules
    Par Pierre845 dans le forum MATLAB
    Réponses: 5
    Dernier message: 22/01/2009, 10h52
  4. Comment trouver une valeur dans un tableau ?
    Par wizou44 dans le forum Excel
    Réponses: 20
    Dernier message: 29/08/2008, 10h57
  5. [Tableaux] Problème de valeur dans un tableau (array)
    Par Flushovsky dans le forum Langage
    Réponses: 15
    Dernier message: 24/03/2006, 13h56

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