输出必须是“这是一个测试字符串示例”。对于具有索引值的小数组过滤器是正确的,如果过滤器数组值超过100个值我们无法分配静态索引号。如何循环过滤到我的基本数组。我知道可以使用array_diff,但我只是学习如何使用for循环。
<?php
$arr = array("This","is","testing","a","string",";","sample");
$filter = array(";","a");
for($i=0; $i < count($arr); $i++){
if($arr[$i] == $filter[0] || $arr[$i] == $filter[1]){
continue;
}
echo "$arr[$i] ";
}
?>
答案 0 :(得分:5)
您可以使用array_diff
从数组中过滤多个值。对于这种情况,您不需要循环。
$filtered = array_diff($arr, $filter);
通常,有一个函数,称为array_filter
来过滤给定谓词的数组中的值。
$filtered = array_filter($arr, function ($item) use ($filter) {
return !in_array($item, $filter);
});
要打印结果,您可以使用连接将整个数组与“胶水”结合起来。
echo join(' ', $filtered);
要修复您的示例,您还可以遍历过滤器并使用continue 2
继续外部循环。但这是非常糟糕的做法,并导致无法读取的代码。所以不要这样做!如果设置了标志,则更好的解决方案是“找到”标志和内部循环后的另一个检查...
for($i=0; $i < count($arr); $i++){
for ($j = 0; $j < count($filter); $j++) {
if ($arr[$i] == $filter[$j]) {
continue 2;
}
}
echo "$arr[$i] ";
}
答案 1 :(得分:1)
使用in_array
foreach ($arr as $item) {
if (in_array($item, $filter) {
continue;
}
echo $item, ' ';
}