получить следующий и предыдущий элементы многомерного массива PHP - PullRequest
1 голос
/ 10 декабря 2010

У меня есть список в 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. Какой лучший способ сделать это?

Ответы [ 2 ]

6 голосов
/ 10 декабря 2010
$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 соответствует первому или последнему элементу массива, хотя, до или после не будет действительным - что вы хотите рассмотреть элементы «до» и «после»?Должен ли массив рассматриваться как круговая структура?

0 голосов
/ 10 декабря 2010

Я бы сказал

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

$prev    = $all[$counter -1];
$current = $all[$counter ];
$next    = $all[$counter +1];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...