首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决此问题: in_array ()要求参数2为数组,文件中给出的是null ...在线

如何解决此问题: in_array ()要求参数2为数组,文件中给出的是null ...在线
EN

Stack Overflow用户
提问于 2019-11-21 01:00:43
回答 2查看 345关注 0票数 0

我对这段代码有一个问题。我收到警告: in_array()要求参数2为数组,文件中给出的是null ...在线上...

代码语言:javascript
复制
 /**
* Filter payment gateways
*/
function my_custom_available_payment_gateways( $gateways ) {
$chosen_shipping_rates = ( isset( WC()->session ) ) ? WC()->session->get( ‘chosen_shipping_methods’ ) : array();

if ( in_array( ‘flexible_shipping_6_1’, $chosen_shipping_rates ) ) :
unset( $gateways[‘cod’] );

elseif ( in_array( ‘flexible_shipping_6_4’, $chosen_shipping_rates ) ) :
unset( $gateways[‘bacs’] );
unset( $gateways[‘paypal’] );

endif;
return $gateways;
}
add_filter( ‘woocommerce_available_payment_gateways’, ‘my_custom_available_payment_gateways’ );

如果有人能帮我那就太好了:-)

EN

回答 2

Stack Overflow用户

发布于 2019-11-21 01:07:50

从您的代码判断,可能是$chosen_shipping_rates数组尚未初始化,正在解析为NULL。

例如,如果您要执行in_array('some string', $uninstantiated_array)

这将返回您正在接收的警告。

我的猜测是,这是因为设置了WC()->session,而不是WC()->session->get( ‘chosen_shipping_methods’ ),因此您将得到一个空数组。

尝试添加一个变量$chosen_shipping_methods = WC()->session->get( ‘chosen_shipping_methods’ ),然后使用( isset( $chosen_shipping_methods ) ) ? $chosen_shipping_methods : array();,看看这是否能解决您的问题。

票数 1
EN

Stack Overflow用户

发布于 2019-11-21 02:41:58

根据您的代码,并假设$chosen_shipping_rates有时不是数组,您可以通过确保只有在变量是数组时才执行负责的代码来避免这个问题:

代码语言:javascript
复制
/**
* Filter payment gateways
*/
function my_custom_available_payment_gateways( $gateways ) {
    $chosen_shipping_rates = ( isset( WC()->session ) ) ? WC()->session->get( ‘chosen_shipping_methods’ ) : array();

    if(isset($chosen_shipping_rates) && is_array($chosen_shipping_rates )){
    if ( in_array( ‘flexible_shipping_6_1’, $chosen_shipping_rates ) ) :
    unset( $gateways[‘cod’] );
    elseif ( in_array( ‘flexible_shipping_6_4’, $chosen_shipping_rates ) ) :
    unset( $gateways[‘bacs’] );
    unset( $gateways[‘paypal’] );

    endif;
    }

return $gateways;
}

add_filter( ‘woocommerce_available_payment_gateways’, ‘my_custom_available_payment_gateways’ );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58959676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档