【问题标题】:Find the new key after the array has been modified修改数组后查找新键
【发布时间】:2011-12-12 17:51:13
【问题描述】:

我有这个

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

在核心代码之后,我的数组可能会变成例如:

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

如果 $value 键已被删除 ($newvalue=8),我希望将变量 ($newvalue) 设置为下一个值,或者如果 6 被删除,则保持不变 ($newvalue=6)仍然在该数组的值中。

注意,如果 $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;

【问题讨论】:

  • 你已经陈述了你想要的行为,但到目前为止你已经尝试过什么来实现它?如果没有,您绝对应该阅读数据结构和算法。它将为您提供解决此类问题的一些很好的见解。
  • 你的大脑受伤了???试图弄清楚你想要做什么,我的大脑很痛。
  • 我不太明白您在问什么,但您似乎可以从array_pusharray_shiftarray_values 中受益
  • 您在这里并不是真的在问问题,而是在给出规范。伟大的!我们需要更多信息、更多代码……以及一个恰当的问题。 (除非这是你的学校作业。)

标签: php arrays next


【解决方案1】:

假设您的数组值始终按升序排列:

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;
    }
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 2020-09-06
    • 1970-01-01
    • 2018-03-30
    相关资源
    最近更新 更多