如果 IF 语句为真,则跳过 array_map 函数的迭代
Skip iteration of array_map function if IF statement True
有没有办法像在普通 for 循环中那样 break
或 continue
内置方法 array_map()
的迭代?
例如:
array_map(function (String s) {
if (condition is met){
continue;
}
return stuff;
}, $array_to_map);
您可以通过简单地返回原始值来模拟 continue
。
array_map(function($var){
if(condition)
return $var; //continue
return $transformedValue;
}, $arr);
然而实际上没有办法 break
(除了令人厌恶的事情,比如使用 StopIteration
异常 class)
没有。 array_map
returns 一个与原始长度相同的数组,因此您不能跳过任何项目。即每次迭代都需要返回一些东西。
您可以使用 array_filter
删除某些项目。
$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.
});
你可以这样试试:
$newArrayWithIds = [];
array_map(function (int $id) use ($newArrayWithIds): void {
if($id === 0) {
return;
}
$newArrayWithIds[] = $id;
}, $yourArrayWithIds);
有没有办法像在普通 for 循环中那样 break
或 continue
内置方法 array_map()
的迭代?
例如:
array_map(function (String s) {
if (condition is met){
continue;
}
return stuff;
}, $array_to_map);
您可以通过简单地返回原始值来模拟 continue
。
array_map(function($var){
if(condition)
return $var; //continue
return $transformedValue;
}, $arr);
然而实际上没有办法 break
(除了令人厌恶的事情,比如使用 StopIteration
异常 class)
没有。 array_map
returns 一个与原始长度相同的数组,因此您不能跳过任何项目。即每次迭代都需要返回一些东西。
您可以使用 array_filter
删除某些项目。
$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.
});
你可以这样试试:
$newArrayWithIds = [];
array_map(function (int $id) use ($newArrayWithIds): void {
if($id === 0) {
return;
}
$newArrayWithIds[] = $id;
}, $yourArrayWithIds);