2010-03-10 7 views
6

Supongamos que sé que hay una clave "twoVal", pero no sé qué hay detrás. ¿Cómo llego a la siguiente clave para ese asunto? Shoud, ¿conozco la posición de la tecla "twoVal"? ¿O hay otra forma de evitarlo?Cómo llegar a la siguiente clave en una matriz

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

Respuesta

0

que podría estar interesado en los diferentes array seeking functions, pero menos una matriz PHP está indexado solamente por números enteros que no hay garantía de orden en las teclas.

+0

Tomado de http://php.net/manual/en/language.types.array.php: 'Un array en PHP es en realidad un map.' ordenado yo diría que eso es una garantía en el orden de las teclas. – Jasper

+0

Además, esta no es realmente una forma de resolver el problema dado, ya que primero debe obtener el puntero interno al elemento con la clave conocida, lo que no se puede hacer de manera eficiente por lo que puedo ver de qué Estás enlazando a. – Jasper

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

¡Eso es inteligente! – Nirmal

+0

Creo que sería más inteligente hacer lo que el OP intenta hacer de otra manera que la manipulación de matriz, pero responde la pregunta. :) – deceze

+0

Esto es exactamente lo que estaba tratando de hacer y mucho más limpio. Gracias por compartir esto. – 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); 
     } 
    } 
} 
Cuestiones relacionadas