【问题标题】:Search for value in array and remove element before and after在数组中搜索值并删除前后元素
【发布时间】:2019-06-03 14:01:07
【问题描述】:

我有一个包含很多内容的数组。这里和例子:

Array
    (
    [0] => Value1 
    [1] => Value2
    [2] => Remove
    [3] => Value3
    [4] => Value4
    [5] => Dont remove
    [6] => Value5 
    [7] => Value6
    [8] => Remove
    // etc... 
);

我想在这个数组中搜索元素“remove”并删除这个元素,并删除“remove”之前的两个元素(值 1、值 2 和值 5 和 6。等等。

我如何在 php 中管理这个?

【问题讨论】:

  • 到目前为止你有什么,有什么问题?
  • 什么是“不要删除”?

标签: php arrays search


【解决方案1】:

一个简单的foreach 循环就足够了 - 如果满足条件,则取消设置元素,在您的情况下,当值为Remove 时。在当前元素和之前的两个元素上使用unset()

这假设您的数组以数字索引没有间隙(因此键从 0 开始,每次迭代递增 1)。如果它们有机会成为其他东西,您可以在遍历数组并取消设置时将两个先前的键存储在一个变量中。

foreach ($array as $k=>$v) {
    if ($v == 'Remove') {
        unset($array[$k]);
        unset($array[$k-1]);
        unset($array[$k-2]);
    }
}
print_r($array);

【讨论】:

  • 推荐检查 $k 小于 2...(不想得到异常)
  • 在未定义的元素上调用 unset() 不会引发通知、警告或异常。什么都没有发生!
  • 不知道 - 奇怪的是它在做unset($a[-1])...时甚至没有引起注意...
  • 它没有明确记录它不会发出任何通知或警告,但它是隐含的 - 因为一开始没有任何文件证明它这样做。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-13
  • 1970-01-01
  • 2012-08-16
  • 2011-10-27
相关资源
最近更新 更多