Получение данных из массива post в CodeIgniter

Итак, у меня есть форма, которая отправляет мне массивы в массиве POST. Я пытаюсь прочитать его так:

$day = $this->input->post("days")[0]; 

Это не работает. PHP говорит «неожиданно» ['". Почему это не работает?

Я исправил это, сделав так:

 $days = $this->input->post("days"); $day = $days[0]; 

Я исправил свою проблему, мне просто интересно, почему первый способ не сработал.

Solutions Collecting From Web of "Получение данных из массива post в CodeIgniter"

PHP не допускает переустановки из вызовов функций. Он реализован в версии SVN trunk версии PHP, поэтому он, скорее всего, превратится в будущие версии PHP. Сейчас вам придётся прибегнуть к тому, что вы сейчас делаете. Для перечисляемых массивов вы также можете использовать list :

 list($day) = $this->input->post("days"); 

См .: http://php.net/list

Синтаксис:

 $day = $this->input->post("days")[0]; 

не поддерживается в PHP. Вы должны делать то, что делаете:

 $days = $this->input->post("days"); $day = $days[0]; 

Другим подходом может быть итерация по массиву с помощью foreach :

 foreach($this->input->post("days") as $day){ echo $day; } 

В дополнение к ответу Даниэля Эгеберга :

Обратите внимание, что list() работает только с числовыми массивами . Если вы / любой человек хотите прочитать ассоциативный массив, например,

 $_POST['date'] = array ( 'day' => 12 'month' => 7 'year' => 1986 ) 

используйте функцию extract() для указанного массива as,

 extract($this->input->post("date"), EXTR_PREFIX_ALL, "date"); 

Теперь следующие переменные будут доступны для использования как,

 $date_day = 19, $date_month = 7 and $date_year = 1986 

ПРИМЕЧАНИЕ. В приведенной выше функции первым аргументом является массив сообщений, второй – для защиты от переменных коллизий, а третий – префикс.

Для получения дополнительной информации о extract() см. Это .

Надеюсь это поможет 🙂

Я бы всегда так делал.

 for($i=0; $i<count($this->input->post("days")); $i++) { $day[$i] = $this->input->post("days[".$i."]"); } 

Это было бы полезно, если вам нужно взаимодействовать с db, проверив каждое значение, переданное вашим представлением в виде массива. В противном случае я предпочитаю цикл foreach.

Ура ..