2010-03-10 5 views
6

Supposons que je sache qu'il y a une clé "twoVal", mais je ne sais pas ce qu'il y a après. Comment puis-je obtenir la clé suivante d'ailleurs? Shoud je connais la position de la clé "twoVal"? Ou il y a un autre moyen de contourner?Obtention de la clé suivante dans un tableau

$arr = array('Cool Viski' => array('oneVal' => '169304', 
            'twoVal' => '166678', 
            'threeVal' => '45134')); 

Répondre

0

Vous pourriez être intéressé par les différents array seeking functions, mais à moins qu'un tableau PHP est indexé uniquement par des entiers il n'y a aucune garantie de l'ordre sur les touches.

+0

Taken de http://php.net/manual/en/language.types.array.php: 'Un tableau en PHP est en fait un map.' ordonné, je dirais que c'est une garantie sur l'ordre des clés. – Jasper

+0

En outre, ce n'est pas vraiment un moyen de résoudre le problème donné, vu que vous devez d'abord obtenir le pointeur interne de l'élément avec la clé connue, ce qui ne peut pas être fait efficacement autant que je peux voir à partir de quoi vous liez à. – Jasper

17
$keys = array_keys($arr['Cool Viski']); 
$position = array_search('twoVal', $keys); 
if (isset($keys[$position + 1])) { 
    $keyAfterTwoVal = $keys[$position + 1]; 
} 
+0

C'est intelligent! – Nirmal

+0

Je pense qu'il serait plus intelligent de faire tout ce que l'OP essaye de faire d'une autre façon que la manipulation de tableau graveleux, mais il répond à la question. :) – deceze

+0

C'est exactement ce que j'essayais de faire et tellement plus propre. Merci d'avoir partagé cela. – spyke01

1
$arr = array('Cool Viski' => array('oneVal' => '169304', 
            'twoVal' => '166678', 
            'threeVal' => '45134')); 
foreach($arr as $s=>$v){ 
    foreach($v as $val){ 
     if(key($v) == "twoVal"){ 
      $t=next($v); 
      print "next key: ".key($v)."\n"; 
      print "next key value is: ".$t."\n";; 
     }else{ 
      next($v); 
     } 
    } 
} 
Questions connexes