我有以下foreach声明:
$classes = '';
foreach($uriSet as $uri) {
if (request()->is($uri)) {
$classes .= 'active';
}
}
相反,我试图像这样使用数组映射:
if (array_map([$this, 'checkUri'], $uriSet)) {
$classes .= 'active';
}
// Somewhere down the class I have
public function checkUri($uri)
{
return request()->is($uri);
}
但if语句似乎始终为true
。我想将它提取到一个单独的方法中,因为我将以相同的方式在其他地方使用checkUri
方法,但之后执行不同的操作(不像我在这里设置类名)。
答案 0 :(得分:0)
我设法用array_filter来做这件事,就像这样:
if (array_filter($uriSet, [$this, 'checkUri'])) {
$classes .= 'active';
}
答案 1 :(得分:0)
array_map()
返回一个数组,因此只有当if
语句返回一个空数组时,它才会为false
语句。
http://php.net/manual/en/function.array-map.php
array array_map ( callable $callback , array $array1 [, array $... ] )
array_map()返回一个包含array1所有元素的数组 在将回调函数应用于每个函数之后。的数量 回调函数接受的参数应与数字匹配 传递给array_map()的数组
var_dump((bool) array(12)); // bool(true)
var_dump((bool) array()); // bool(false)
答案 2 :(得分:0)
由于您正在使用Laravel,因此您可以使用item.poll
类上的contains
方法:
Collection