有没有办法像普通的for循环中那样break
或continue
迭代内置方法array_map()
?
例如:
array_map(function (String s) {
if (condition is met){
continue;
}
return stuff;
}
, $array_to_map);
答案 0 :(得分:2)
不。 array_map
返回的数组长度与原始数组的长度相同,因此您不能跳过任何项目。即每次迭代都需要返回一些内容。
您可以使用array_filter
删除某些项目。
答案 1 :(得分:0)
您可以通过简单地返回原始值来模拟continue
。
array_map(function($var){
if(condition)
return $var; //continue
return $transformedValue;
}, $arr);
但是,实际上并没有办法break
(除了使用StopIteration
异常类之类的令人讨厌的事物之外)
答案 2 :(得分:0)
$results = array_map(function (String s) {
if (condition is met){
//do stuff
} else {
return false;
}
return stuff;
}, $array_to_map);
$results
然后将包含一个数组,其中元素的原始数量为$ array_to_map,仅当条件失败时将数组元素设置为false
然后做。
$array_with_elements_remove = array_filter($results, function($e){
return $e; //when this value is false the element is removed.
});