Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在数组中搜索值并删除前后的元素_Php_Arrays_Search - Fatal编程技术网

Php 在数组中搜索值并删除前后的元素

Php 在数组中搜索值并删除前后的元素,php,arrays,search,Php,Arrays,Search,我有一个包含大量内容的数组。以下是示例: Array ( [0] => Value1 [1] => Value2 [2] => Remove [3] => Value3 [4] => Value4 [5] => Dont remove [6] => Value5 [7] => Value6 [8] => Remove // etc... ); 我想

我有一个包含大量内容的数组。以下是示例:

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中管理它?

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

这假设您的数组在数字上是无间隙索引的(因此每次迭代键从0开始,递增1)。如果它们有可能是其他键,您可以在迭代数组时将前面的两个键存储在一个变量中并取消设置

foreach($k=>v的数组){
如果($v=='Remove'){
未设置($array[$k]);
未设置($数组[$k-1]);
未设置($数组[$k-2]);
}
}
打印(数组);
  • 现场演示

到目前为止您有什么问题?有什么问题?不删除?建议检查
$k
小于2…(不希望出现异常)调用
unset()
在未定义的元素上不会引发通知、警告或异常。什么都不会发生!不知道-奇怪的是,它在执行
取消设置($a[-1])时甚至不会引发通知。
没有明确的文档说明它不会引发任何通知或警告,但它是隐含的-因为没有文档说明它这样做。