Php 为什么_术语不适用于和运算符?

Php 为什么_术语不适用于和运算符?,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我正在与WooCommerce中的多个条件合作,根据购物车中的现有类别执行特定操作: if( (has_term( 'prestamos-empresa', 'product_cat', get_post( $product_id ))) && (has_term( 'productos-de-ahorro', 'product_cat', get_post( $product_id ))) ){ unset($fields[

我正在与WooCommerce中的多个条件合作,根据购物车中的现有类别执行特定操作:

if( (has_term( 'prestamos-empresa', 'product_cat', get_post( $product_id ))) && (has_term( 'productos-de-ahorro', 'product_cat', get_post( $product_id ))) ){            
               unset($fields['billing']['info_financiera']);
               unset($fields['billing']['billing_iban']); 
               unset($fields['billing']['billing_titularcuenta']); 
               unset($fields['billing']['billing_sinmoroso']);
               unset($fields['billing']['billing_cargorol']);
               unset($fields['billing']['billing_ingreso']);
               unset($fields['billing']['billing_tipocontrato']);
               unset($fields['billing']['billing_antiguedad']);
               unset($fields['billing']['billing_fechasueldo']);
            }
如果我使用OR运算符,如果它有效,也可以尝试&而不尝试任何操作。我将留下我的另一段代码:

    function campos_checkout_condicional( $fields ){        

    foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {        
        $product_id   = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );        

            // Si esta Micro Prestamos o Prestamos Personales en carrito devolver todos los campos.
            if( has_term( array('micro-prestamos','prestamos-personales'), 'product_cat', get_post( $product_id ) ) ){
                return $fields;
            }

            // Solo prestamos empresas y productos de ahorro en carrito.
            if( (has_term( 'prestamos-empresa', 'product_cat', get_post( $product_id ))) && (has_term( 'productos-de-ahorro', 'product_cat', get_post( $product_id ))) ){            
               unset($fields['billing']['info_financiera']);
               unset($fields['billing']['billing_iban']); 
               unset($fields['billing']['billing_titularcuenta']); 
               unset($fields['billing']['billing_sinmoroso']);
               unset($fields['billing']['billing_cargorol']);
               unset($fields['billing']['billing_ingreso']);
               unset($fields['billing']['billing_tipocontrato']);
               unset($fields['billing']['billing_antiguedad']);
               unset($fields['billing']['billing_fechasueldo']);
            }

            // Solo prestamos empresa e inversion // Solo productos de ahorro y inversion
            if( ((has_term( 'prestamos-empresa', 'product_cat', get_post( $product_id ))) && (has_term( 'inversion', 'product_cat', get_post( $product_id )))) || ((has_term( 'productos-de-ahorro', 'product_cat', get_post( $product_id ))) && (has_term( 'inversion', 'product_cat', get_post( $product_id )))) ){            
               unset($fields['billing']['info_financiera']);
               unset($fields['billing']['billing_iban']); 
               unset($fields['billing']['billing_titularcuenta']); 
               unset($fields['billing']['billing_sinmoroso']);
               unset($fields['billing']['billing_fechasueldo']);
            }
    }
}
编辑:实现完整的功能,使用&&但它不能按预期工作。例如:我希望,如果只有两个特定类别执行此类操作(如果类别1和类别2)


它怎么能工作?为什么它不起作用?谢谢

使用
&&
而不是
布尔运算符


使用
|
而不是
布尔运算符。

我已经更新了帖子,使用它不起作用。我已经确保分类存在于购物车中,如果我使用| |,如果它能工作,但不能满足我的要求。我阅读代码的方式是这样的,布尔运算符不是问题。我认为这是你使用函数的方式,如果返回一个正确的布尔值或1或0或NULL返回。请你再解释一下好吗?请阅读:处理布尔值和逻辑,这有点棘手。你必须预测正确或错误的结果。