在PHP中组合多个数组

时间:2016-08-15 11:19:48

标签: php arrays woocommerce

以下PHP代码不包括Google Merchant Center中的Woocommerce类别。您如何组合in_array以缩短代码?

// Exclude categories from my Google Product Feed

function lw_gpf_exclude_product($excluded, $product_id, $feed_format) {
    // Return TRUE to exclude a product, FALSE to include it, $excluded to use the default behaviour.
    $cats = wp_get_post_terms( $product_id, 'product_cat', array( 'fields' => 'ids' ) );
    if ( in_array( 60, $cats ) ) {
        return TRUE;
    }
    if ( in_array( 63, $cats ) ) {
        return TRUE;
    }
    if ( in_array( 88, $cats ) ) {
        return TRUE;
    }
    if ( in_array( 89, $cats ) ) {
        return TRUE;
    }
    return $excluded;
}
add_filter( 'woocommerce_gpf_exclude_product', 'lw_gpf_exclude_product', 11, 3);

4 个答案:

答案 0 :(得分:2)

如果只有一个值足以返回true,则可以与两个数组相交,如果结果数组的大小(包含元素),则两个数组中至少存在一个值。

return count(array_intersect([60, 63, 88, 89], $cats)) > 0;

答案 1 :(得分:0)

使用array_intersect函数的解决方案:

...
if (array_intersect([60, 63, 88, 89], $cats)){
    return TRUE;
}

答案 2 :(得分:0)

试试这个。

return !empty(array_intersect(array(60,63,88,89),$cats));

答案 3 :(得分:0)

使用

in_array_any
这样的函数来缩短代码


    function in_array_any($needles, $haystack) {
        return !!array_intersect($needles, $haystack);
    }

    if(in_array_any([60,63,88,89], $cats)){
        return TRUE;
    }