1
votes

Obtenir la clé du tableau avec plusieurs valeurs

Je dois donc renvoyer le nombre (6, 8 ou 10) avec la valeur du pays. Donc, dans l'exemple, avec 'sweden', il est supposé retourner 8 mais la clé du tableau est apparemment juste Array (). Est-ce que la structure de mon tableau ou l'utilisation de array_keys?

$list= array (
  'list' => 
  array (
    6 => 
    array (
        'default',
        'finland'
    ),
    8 => 
    array (
        'sweden',
        'norway'
    ),
    10 => 
    array (
        'germany',
        'belgia'
    ),
  ),
);
print_r(array_keys($list, "sweden"));

return: Array()


4 commentaires

Double possible de PHP Multidimensional Array Searching (Trouver la clé par valeur spécifique)


n'a pas l'air d'être


Quoi? utilisez la réponse acceptée qui fonctionne;) arrray_keys ne fonctionne pas très bien avec les tableaux multidimensionnels.


dans cette question, c'est un tableau associatif et recherche un «slug» avec une valeur de slugs, c'est différent


3 Réponses :


3
votes

Vous avez deux problèmes.

Premièrement, le tableau que vous souhaitez rechercher est $ list ['list'] , pas $ list lui-même. p >

Deuxièmement, le deuxième argument de array_keys () n'est utile que pour les tableaux à 1 dimension. Vous avez un tableau à 2 dimensions, mais array_keys () ne cherchera pas automatiquement à l'intérieur des tableaux imbriqués. Vous devez donc écrire votre propre boucle ou utiliser array_filter().

$results = array();
foreach ($list['list'] as $key => $value) {
    if (array_search('sweden', $value) !== false) {
        $results[] = $key;
    }
}
print_r($results);


2 commentaires

Je reçois une erreur d'analyse: erreur de syntaxe, "as" inattendu, dois-je modifier quelque chose?


Doit être foreach , pas for



0
votes

utilisez foreach pour cela.

foreach ($list as $key => $value){

}


0 commentaires

0
votes

Je pense que c'est ce que vous voulez

foreach($list as $key => $value ){  
        $arr = array_keys($value);//this has your (6, 8 or 10)         
        foreach($arr as $val){
             print_r($value[$val]);//showing array data of 6,8,10 indexes
        }  
    }

sortie: entrez la description de l'image ici


0 commentaires