我在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
);
我想要做的是在数组之前和之后获取数组order == $ center。实现这一目标的最佳方法是什么?
答案 0 :(得分: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];
如果$ center匹配数组的第一个或最后一个元素,但是之前或之后将无效 - 您想要考虑“之前”和“之后”元素?阵列应该被视为圆形结构吗?
答案 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];