如果IF语句为True,则跳过array_map函数的迭代

时间:2019-01-10 23:18:49

标签: php array-map

有没有办法像普通的for循环中那样breakcontinue迭代内置方法array_map()

例如:

array_map(function (String s) {
if (condition is met){
    continue;
    }
return stuff;
}
, $array_to_map);

3 个答案:

答案 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.
});