FOR 循环需要更多的重复次数才能得到我需要的结果
我有一个问题。在我看来,这应该可以正常工作:
for($i = 0; $i < count($tags); $i++){
if(in_array($tags[$i], $str)){
for($a = 0; $a < count($str); $a++){
if($tags[$i] == $str[$a]){
unset($str[$a]);
}
}
}
}
str 是一个由 1, 3, 4, 5, 500, 501 组成的数组。tags
是一个由 4, 5, 500, 501 组成的数组。
结果应该是 1, 3。结果是1,3,500,501。
经过实验,我发现这段代码可以工作,但不稳定,在我看来:
for($i = 0; $i < count($str) + count($tags); $i++){
for($a = 0; $a < count($tags); $a++){
if ($tags[$a] == $str[$i]) {
unset($str[$i]);
}
}
$a = 0;
}
我做错了什么?
I've got a problem. In my opinion this should work fine:
for($i = 0; $i < count($tags); $i++){
if(in_array($tags[$i], $str)){
for($a = 0; $a < count($str); $a++){
if($tags[$i] == $str[$a]){
unset($str[$a]);
}
}
}
}
str is an array consisting of 1, 3, 4, 5, 500, 501.
tags is an array consisting of 4, 5, 500, 501.
The result should be 1, 3. The result is 1, 3, 500, 501.
After experimenting, I found out that this code works but is unstable, in my opinion:
for($i = 0; $i < count($str) + count($tags); $i++){
for($a = 0; $a < count($tags); $a++){
if ($tags[$a] == $str[$i]) {
unset($str[$i]);
}
}
$a = 0;
}
What am I doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当你可以简单地执行以下操作时,代码太多了:
Far too much code, when you could simply do:
假设您没有使用
array_diff
。foreach
更好。您不需要计数,您正在处理数组的实际键。array_search
在迭代方面比最优化的 PHP 代码要好得多。示例:
Assuming that you're not using
array_diff
.foreach
is simply better. You don't need count and you're dealing with the actual keys of the array.array_search
is far better at iterating than the most optimized PHP code.Example: