PHP Предупреждение: in_array () ожидает, что параметр 2 будет массивом, ноль задан в / home / - PullRequest
0 голосов
/ 20 апреля 2020

Мне нужен код, чтобы избежать этой ошибки в этой части: - добавлен параметр страницы редактирования продукта woocommerce для выбора указанных c пользователей / с или указанных c пользовательских ролей / с или указанных c групп / с выбранных пользователи найдут на указанной передней странице c поле выбора, чтобы выбрать продукт

, единственный способ работать без отображения ошибки (я должен выбрать хотя бы одного пользователя, одну роль пользователя и одну группу), если Я оставил, даже если одно поле из трех полей пусто, тогда, когда выбранный пользователь посещает интерфейсную страницу, я получил следующую ошибку в error_log

[09-Apr-2020 15:55:52 UTC] PHP Warning: in_array() expects parameter 2 to be array, null given in /home/comenzo/mysite.com/wp-content/plugins/myplugin/myplugin.php on line 1128

, также я получаю Уведомление в строке 1128

Undefined offset: 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>";
    ?>

, поэтому, пожалуйста, используйте код, чтобы избежать этой ошибки, если я выберу только одно поле или буксировку из три поля, чтобы не получить эту ошибку или даже если я не выберу ни одного из них

regards

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Вы должны подтвердить, что использованные вами метаданные являются массивом. Пожалуйста, отметьте

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"));

Если они выглядят как массивы ([0] => 'A', [1] => 'B'), вы должны удалить [0] из оператора if.

if(in_array($user_id,get_post_meta($product_id,"product_user_list")) || in_array($user_roles[0],get_post_meta($product_id,"product_user_role_list")) || in_array($group_id,get_post_meta($product_id,"product_point_groups")))
0 голосов
/ 20 апреля 2020

Ваше сообщение в строке 1128 связано с опечаткой в ​​вашем коде: строка if, второй in_array: "$ user_roles [0]", попробуйте удалить "[0]"

И относительно ошибка, которую вы получаете, это потому, что функция in_array ожидает, что массив будет искать переменную в, поэтому я думаю, что если вы запустите свой код, где первое условие истинно, вы не должны получать никаких ошибок, но если первое, второе или все условия равны ложному, вы получите эту ошибку, и это нормально, также ваш массив не одинаков во всех условиях, поэтому использование одиночного if, если их проверить, не вариант,

Решением может быть проверить, установлен ли сам массив и существует ли он, а затем проверить другие условия, например, проверить, является ли "get_post_meta ($ product_id," product_user_list ") [0]" массивом и ...

Удачи :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...