Попытка получить доступ к смещению массива при типе значения null в

#php #arrays #select #null

#php #массивы #выберите #null

Вопрос:

Я обновил свою версию PHP до 7.4, и эта ошибка начала появляться впоследствии. Ошибка отображается в параметрах в <выбранном теге, когда я пытаюсь сохранить данные даже после обновления страницы.

 <?PHP
     $posts = filter_input_array(INPUT_POST, FILTER_DEFAULT);
?>
<form method="post" name="create_posts">
<label>Categories available</label>
<select name="category_id" class="select_list">
  <option value="null">Pick a category: </option>

<?PHP
     $readCategs= new Read();
     $readCategs->query("SELECT DISTINCT ca.id AS cat_id,
                                      ca.title AS title, ca.content AS content
                                      FROM categories ca LEFT JOIN posts p ON p.cat_id = ca.id
                                        ORDER BY title ASC");
                            //var_dump($readCategs);
     if(!$readCategs->getResult()):
       echo "<a href='create_category'><option disabled='disabled'>
         There are no categories</option></a>";
     else:
       foreach($readCategs->getResult() AS $categs):
         echo "<option value="{$categs['cat_id']}" class='options' ";
           if($posts['category_id'] == $categs['cat_id']):
             echo 'selected="selected" ';
           endif;
         echo ">{$categs['title']}</option>";
       endforeach;
     endif;
?>
</select>
</form>````        

The error shows on the "if($posts['category_id'] == $categs['cat_id']):" line
 

Ответ №1:

Имеет тенденцию предполагать, что либо $posts, либо $categors являются нулевыми или не являются массивом. Попробуйте выполнить следующее, чтобы показать, что не является массивом var_dump($posts); var_dump($categs);

Вы можете проверить наличие массива с помощью is_array

Комментарии:

1. Что ж, ваше предложение не сработало, но я очень старался заставить его работать, и это сработало!! Вот что я добавил: в «if($posts[‘category_id’] == $categors[‘cat_id’]):«` , я просто помещаю это условие внутри другого, if(isset($posts[‘$category_id)): if($posts[‘category_id’] == $categors[‘cat_id’]): endif; Оказывается, он будет сравнивать $posts[‘category_id] с $categors[‘cat_id’] только тогда, когда в массиве $posts есть значения. Проблема заключалась в том, что в этом массиве не было значения, КОГДА происходило сравнение. В любом случае, я ценю вашу поддержку, партнер. Спасибо