Ошибка неопределенного смещения

#php #arrays #codeigniter

#php #массивы #codeigniter

Вопрос:

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

 <input type="checkbox" name="checkbox_units_a[5][]" value="tv">
<input type="checkbox" name="checkbox_units_a[5][]" value="radio">

$name_un = $this -> input -> post('name_units_a');
$service_un = $this -> input -> post('checkbox_units_a');
$data3 = array();
foreach($name_un as $idx => $name) {
    $data3[] = array(
    'name_un' => $name_un[$idx],
    'service_un' => json_encode($service_un[$idx]), ); //This is line 210
};
$this -> db -> insert_batch('hotel_units', $data3);
  

Ошибка:

Обнаружена ошибка PHP
Серьезность: Уведомление
Сообщение: Неопределенное смещение: 0
Имя файла:
residence.php Номер строки: 210

Мой вывод в var_dump из $name_un :

 array(1) {
    [0] = > string(6)"accessories"
}
  

Мой вывод в var_dump из $service_un :

 array(1) {
    [5] = > array(2) {
        [0] = > string(15)"tv" [1] = > string(12)"radio"
    }
}
  

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

1. Вы пытались распечатать массив $service_un: print_r($service_un); ?

2. Вам нужно улучшить свой письменный английский , очень сложно понять ваши вопросы.

3. Пожалуйста, посмотрите Мое обновление (вывод vardump) в сообщении.

Ответ №1:

Ошибка говорит, что ваше смещение 0 , вероятно, равно вашему $idx == 0 и $service_un[$idx] == null 😉

Редактировать

Как я и думал $idx == 0 , вызывает неопределенное смещение 0 при json_encode попытке переиндексировать ваш $service_un массив (если вы не можете изменить 5 в HTML), чтобы он начинался с 0 примера:

 $service_un = array_values ( $service_un ); // reindexing array
  

это будет выглядеть так:

 array(1) {
  [0] => array(2) {
    [0] => string(2) "tv"
    [1] => string(5) "radio"
  }
}
  

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

1. Хорошо, и, пожалуйста, выведите var_dump($name_un)

2. Пожалуйста, смотрите Мой пост для var_dump($name_un)

Ответ №2:

$service_un есть только одно смещение, и оно равно пяти (5), поэтому 0 здесь не определено.