首页 > 解决方案 > PHP 警告:in_array() 期望参数 2 为数组,在 /home/co 中给出 null

问题描述

我需要代码来避免这部分中的此错误:- 添加到 woocommerce 产品编辑页面选项以选择特定用户或特定用户角色或特定组所选用户将在特定前端页面中找到一个选择框选择产品

不显示错误的唯一工作方法是(我必须选择至少一个用户和一个用户角色和一个组)如果我离开即使三个字段中的一个字段为空,那么一旦选定的用户访问我得到的前端页面error_log 中的下一个错误

[09-Apr-2020 15:55:52 UTC] PHP 警告:in_array() 期望参数 2 为数组,/home/comenzo/mysite.com/wp-content/plugins/myplugin/myplugin.php 中给出的 null第 1128 行

我也在第 1128 行收到通知

未定义的偏移量:0

这是第 1128 行

if(in_array($user_id,get_post_meta($product_id,"product_user_list")[0]) || in_array($user_roles[0],get_post_meta($product_id,"product_user_role_list")[0]) || in_array($group_id,get_post_meta($product_id,"product_point_groups")[0])) {

这部分的整个代码是

echo "<label>Select Product</label>";
echo '<select class="user_product" name="user_product" class="form-control" style="margin-bottom:30px;margin-top:30px;" required>';
echo "<option value='-1'>Select Product</option>";
/*echo "<h1>HEllo JMM JMK JPD!</h1>";*/
foreach($product_ids as $product_id)
  { 
    $product = wc_get_product( $product_id );
    /*echo "<h1>HEllo JMM JMK JPD!</h1>";
    print_r(get_post_meta($product_id,"product_user_list"));
    print_r(get_post_meta($product_id,"product_user_role_list"));
    print_r(get_post_meta($product_id,"product_point_groups"));*/
    if(in_array($user_id,get_post_meta($product_id,"product_user_list")[0]) || in_array($user_roles[0],get_post_meta($product_id,"product_user_role_list")[0]) || in_array($group_id,get_post_meta($product_id,"product_point_groups")[0])) {
        echo "<h1>IN</h1>";
    ?>

因此,如果我只选择一个字段或从三个字段中选择两个字段以不出现此错误,或者即使我没有选择其中任何一个,请需要代码来避免此错误

问候

标签: phpwordpress

解决方案


我不确定你为什么要使用[0]但是如果实际的元值应该是一个数组,那么这将起作用:

$product = wc_get_product( $product_id );

$product_user_list = get_post_meta($product_id,"product_user_list");
$product_user_role_list = get_post_meta($product_id,"product_user_role_list");
$product_point_groups = get_post_meta($product_id,"product_point_groups");

$product_user_list_array = is_array( $product_user_list ) ? $product_user_list : array();
$product_user_role_list_array = is_array( $product_user_role_list ) ? $product_user_role_list : array();
$product_point_groups_array = is_array( $product_point_groups ) ? $product_point_groups : array();

if( in_array($user_id, $product_user_list_array) || in_array($user_roles[0],$product_user_role_list_array) || in_array($group_id,$product_point_groups_array)) {
    echo "<h1>IN</h1>";
}

推荐阅读