如何返回变量中的布尔类型?我有代码:
$imageRes = array_reduce(['image', 'image1', 'image2'], function ($carry) {
return in_array($carry, ['image1', 'image2']);
});
如果return
中的元素之一在imageRes
中,则我需要['image1', 'image2']
中的['image', 'image1', 'image2']
为布尔类型:true / false。我该怎么办?
答案 0 :(得分:2)
使用array_intersect()
代替array_reduce()
,计算其结果并将其转换为布尔值。如果没有交集,则count()
将为零,因此为布尔值false
。如果至少有一个相交的值,则count()
将大于1,并且转换为布尔值的任何非零数字将为true
。
$imageRes = (bool)count(array_intersect(['image1', 'image2'], ['image', 'image1', 'image2']));
输出:
bool(true)
答案 1 :(得分:1)
如果只需要知道两个数组中是否有任何元素,请使用array_intersect()
,对结果进行计数并转换为boolean(!!
)
$ref_array = ['image1', 'image2'];
$array = ['image', 'image1', 'image2'];
$imageRes = !!count(array_intersect($array, $ref_array));
var_dump($imageRes);
答案 2 :(得分:0)
使用array_reduce
的可能解决方案是这样的:
$imageRes = array_reduce(
['image', 'image1', 'image2',],
function($carry, $item) {
return $carry || in_array($item, ['image1', 'image2']);
},
false //Initial value is false
);