2010-03-10 41 views
6

Giả sử tôi biết rằng có "haiVal" chính, nhưng tôi không biết cái gì là sau nó. Làm thế nào để tôi có được chìa khóa tiếp theo cho vấn đề đó? Tôi biết vị trí của chìa khóa "twoVal"? Hay có một cách khác?Lấy chìa khóa tiếp theo trong một mảng

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

Trả lời

0

Bạn có thể quan tâm trong nhiều array seeking functions, nhưng trừ một mảng PHP được lập chỉ mục chỉ bởi số nguyên không có bảo đảm trật tự trên các phím.

+0

Taken từ http://php.net/manual/en/language.types.array.php: 'Một mảng trong PHP là thực sự là một map.' ra lệnh tôi muốn nói đó là một sự đảm bảo theo thứ tự của các phím. – Jasper

+0

Ngoài ra, đây không thực sự là một cách để giải quyết vấn đề đã cho, bạn cần phải có được con trỏ bên trong đến phần tử với khóa đã biết, không thể thực hiện hiệu quả như tôi thấy từ cái gì bạn đang liên kết đến. – Jasper

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

Đó là thông minh! – Nirmal

+0

Tôi nghĩ rằng nó sẽ được thông minh hơn để làm bất cứ điều gì OP đang cố gắng để làm một cách khác hơn nitty gritty mảng thao tác, nhưng nó trả lời câu hỏi. :) – deceze

+0

Đây chính xác là những gì tôi đang cố gắng làm và sạch hơn rất nhiều. Cảm ơn bạn đã chia sẻ điều này. – 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); 
     } 
    } 
} 
Các vấn đề liên quan