数组减少变量中的返回布尔值

时间:2019-04-16 16:41:45

标签: php arrays

如何返回变量中的布尔类型?我有代码:

$imageRes = array_reduce(['image', 'image1', 'image2'], function ($carry) {
    return in_array($carry, ['image1', 'image2']);
});

如果return中的元素之一在imageRes中,则我需要['image1', 'image2']中的['image', 'image1', 'image2']为布尔类型:true / false。我该怎么办?

3 个答案:

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