$我--;迭代器陷入无限循环 - for 循环 php
$i--; iterator gets caught in infinite loop - for loop php
我正在使用带有递增迭代器的基本 for
循环来检查重复项:
$array = ['a', 'b', 'c', 'c', 'c', 'd'];
for ($i = 0; $i < $length-1; $i++) {
if ($array[$i] == $array[$i + 1]) {
//delete $array[$i + 1]
$i--;
}
}
我想将所有元素与数组中的下一个元素进行比较。如果有重复项,我有一个辅助函数来删除它,但随后想将 $i
重置回一个以再次将其与使用 $i--;
删除的元素之后的下一个元素进行比较。但是,当我这样做时,我陷入了无限循环。有谁知道如何解决这个问题?
您在递增后递减 $i
,因此它将始终在 0
和 1
之间切换。
PHP 中有一个函数可以满足您的要求:array_unique()
$array = ['a', 'b', 'c', 'c', 'c', 'd'];
$last = $array[0];
for ($i = 1; $i < count($array); $i++) {
if ($array[$i]==$last) {
unset($array[$i]); // delete element
}
else $last = $array[$i]; // remember value
}
var_dump($array);
生产
array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [5]=> string(1) "d" }
我正在使用带有递增迭代器的基本 for
循环来检查重复项:
$array = ['a', 'b', 'c', 'c', 'c', 'd'];
for ($i = 0; $i < $length-1; $i++) {
if ($array[$i] == $array[$i + 1]) {
//delete $array[$i + 1]
$i--;
}
}
我想将所有元素与数组中的下一个元素进行比较。如果有重复项,我有一个辅助函数来删除它,但随后想将 $i
重置回一个以再次将其与使用 $i--;
删除的元素之后的下一个元素进行比较。但是,当我这样做时,我陷入了无限循环。有谁知道如何解决这个问题?
您在递增后递减 $i
,因此它将始终在 0
和 1
之间切换。
PHP 中有一个函数可以满足您的要求:array_unique()
$array = ['a', 'b', 'c', 'c', 'c', 'd'];
$last = $array[0];
for ($i = 1; $i < count($array); $i++) {
if ($array[$i]==$last) {
unset($array[$i]); // delete element
}
else $last = $array[$i]; // remember value
}
var_dump($array);
生产
array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [5]=> string(1) "d" }