Php 数组拼接()是';t在回路中不能正常工作

Php 数组拼接()是';t在回路中不能正常工作,php,arrays,array-splice,Php,Arrays,Array Splice,此代码按预期工作,并在值为5或10时删除数组元素。但它只有在数组中有1个值,即5或10时才起作用 如果我有超过1个值,即5或10,则只删除其中的1个,并保留数组中的其他元素 我的代码: for($i = 0; $i <= 10; $i++) { if($somevar[$i] == 5 || $somevar[$i] == 10) { echo 'the sumvar'.$somevar[$i].' exists<br>'; array_

此代码按预期工作,并在值为5或10时删除数组元素。但它只有在数组中有1个值,即5或10时才起作用

如果我有超过1个值,即5或10,则只删除其中的1个,并保留数组中的其他元素

我的代码:

for($i = 0; $i <= 10; $i++) {
    if($somevar[$i] == 5 || $somevar[$i] == 10) {
        echo 'the sumvar'.$somevar[$i].' exists<br>';
        array_splice($somevar, $i, 1);
    }
}

对于($i=0;$i您似乎没有注意到数组元素在

您必须调整循环变量:

for($i=0;$i sizeof($somevar);$i++){
如果($somevar[$i]==5 | |$somevar[$i]==10){
回显“sumvar”。$somevar[$i]。“existsbr>”;
阵列拼接($somevar,$i,1);
$i--;
}
}

如果像这样使用
array\u splice()
它将删除数组元素并重新为数组编制索引。因此,如果使用键0删除5,则循环将转到1,但数组将重新编制索引到:
[0=>10,1=>6]
并跳过10,因为您不会返回到0。因此只需使用
unset()
并使用
array\u values()
在数组之后重新为数组编制索引。如果只想筛选出10和5,请使用
array\u filter()
这似乎是一个无限循环?For循环的表述不正确。使用
$i==10
单个
=
正在分配一个值,而不是测试一个值抱歉,伙计们,我已经更新了我的代码。匆忙完成了示例代码。你能解释一下你想要实现什么吗?