Найти новый ключ после изменения массива - PullRequest
0 голосов
/ 12 декабря 2011

У меня есть это

array([0] => 4, [1] => 6, [2] => 8, [3] =>11);
$value = 6;//(refers to [1])

После кода ядра мой массив МОЖЕТ измениться, например:

array([0] => 4, [1] => 8, [2] =>11);

Я хотел бы иметь переменную ($newvalue)установить следующее значение, если ключ $value был удален ($newvalue=8), или оставить то же самое ($newvalue=6), если 6 все еще находится в значениях этого массива.

NB, если$value является последним (11), и 11 было удалено, $newvalue должно быть установлено на 4.

Подводя итог:

$value = 11; /* array([0] => 4, [1] => 6, [2] => 8);            */ $newvalue = 4;
$value = 11; /* array([0] => 4, [1] => 6, [2] => 8, [3] => 11); */ $newvalue = 11;

1 Ответ

0 голосов
/ 12 декабря 2011

Предполагая, что значения вашего массива всегда в порядке возрастания:

if (in_array($value, $the_array)) {
  $newvalue = $value;
} else if ($value > max($the_array)) {
  $newvalue = $the_array[0];
} else {
  foreach ($the_array as $v) {
    if ($v > $value) {
      $newvalue = $v;
      break;
    }
  }
}
...