2010-12-09 120 views
1

我在PHP結構如下列表:讓PHP多維數組的下一個和以前的元素

$center = '2'; 

$all = array(
    array(
    'foo'=>'abc', 
    'bar'=>'def', 
    'order' => 2 
    ), 
    array(
    'foo'=>'abc', 
    'bar'=>'def', 
    'order' => 5 
    ), 
    array(
    'foo'=>'abc', 
    'bar'=>'def', 
    'order' => 11 
    ), 
    //..etc 
); 

我想要做的是什麼之前和數組,其中訂單後獲得數組== $ center。什麼是實現這一目標的最佳方式?

+0

[最快的方式獲取多維數組中的父數組鍵使用PHP](http://stackoverflow.com/questions/2776107/fastest-way-to-get-parent-array-key-in-multidimensional -arrays-with-php) – Gordon 2010-12-09 21:36:19

回答

6
$idx = 0; 
foreach ($array as $key => $value) { 
    if ($value['order'] == $center) { 
     $idx = $key; 
     break; 
    } 
} 

$before = $all[$idx - 1]; 
$current = $all[$idx]; 
$after = $all[$idx + 1]; 

如果$中心數組的第一個或最後一個元素相匹配,雖然之前或之​​後將是無效的 - 你要考慮「什麼之前「和」之後「元素?該陣列是否應該被看作一個圓形結構?

0

我想說

counter = 0; 
foreach($all as $order){ 
    if($order['order'] == $center){ 
     break; 
    } 
    counter += 1; 
} 

$prev = $all[$counter -1]; 
$current = $all[$counter ]; 
$next = $all[$counter +1]; 
+1

$ center是子數組中的順序目標值,而不是外部數組中的索引 – 2010-12-09 21:36:35

+0

即使是這樣,只需在數組中循環並找到具有`order = = 11` ..然後在傑夫的答案中使用該索引代替`$ center` – Dutchie432 2010-12-09 21:37:27

相關問題