array_splice() 在循环内无法正常工作
array_splice() isn't working properly inside a loop
此代码按预期工作,并在值为 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);
}
}
例如,如果我有:[3, 5, 4]
结果符合预期:[3, 4]
。但是如果我有一个像这样的数组:[3, 5, 10, 4]
它只会删除 5,而不是 10:[3, 10, 4]
.
我似乎找不到我做错了什么以及为什么我的代码没有按预期工作?
您似乎没有注意到数组元素在 splice-operation 之后重新编号。
您必须调整循环变量:
for($i = 0; $i < sizeof($somevar); $i++) {
if($somevar[$i] == 5 || $somevar[$i] == 10) {
echo 'the sumvar'.$somevar[$i].' exists<br>';
array_splice($somevar, $i, 1);
<b>$i--;</b>
}
}
此代码按预期工作,并在值为 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);
}
}
例如,如果我有:[3, 5, 4]
结果符合预期:[3, 4]
。但是如果我有一个像这样的数组:[3, 5, 10, 4]
它只会删除 5,而不是 10:[3, 10, 4]
.
我似乎找不到我做错了什么以及为什么我的代码没有按预期工作?
您似乎没有注意到数组元素在 splice-operation 之后重新编号。
您必须调整循环变量:
for($i = 0; $i < sizeof($somevar); $i++) {
if($somevar[$i] == 5 || $somevar[$i] == 10) {
echo 'the sumvar'.$somevar[$i].' exists<br>';
array_splice($somevar, $i, 1);
<b>$i--;</b>
}
}