Min*_* Ko 1 php arrays loops for-loop
输出必须是"这是一个测试字符串示例".对于具有索引值的小数组过滤器是正确的,如果过滤器数组值超过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] ";
}
?>
Run Code Online (Sandbox Code Playgroud)
您可以使用从数组中过滤多个值array_diff.对于这种情况,您不需要循环.
$filtered = array_diff($arr, $filter);
Run Code Online (Sandbox Code Playgroud)
通常,有一个函数,被称为array_filter过滤给定谓词的数组中的值.
$filtered = array_filter($arr, function ($item) use ($filter) {
return !in_array($item, $filter);
});
Run Code Online (Sandbox Code Playgroud)
要打印结果,您可以使用join将整个数组与"胶水"组合在一起.
echo join(' ', $filtered);
Run Code Online (Sandbox Code Playgroud)
要修复您的示例,您还可以遍历过滤器并使用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] ";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
913 次 |
| 最近记录: |