преобразовать PHP-код в массив - PullRequest
0 голосов
/ 12 сентября 2011

Я использую codeigniter, я отправляю ввод буксировки в виде массива в следующий php-код, но следующий php-код не получает его в виде массива. Как изменить php-код для массива get value?

<input type="text" name="date[]">
<input type="text" name="date[]">

$date = $this -> input -> post('date');

$jdate = jgmdate("Y/m/j");
list($year_now, $month_now, $day_now) = explode('/', $jdate, 3);
list($year, $month, $day) = explode('/', $date, 3);//Line Number: 97
if($year>=$year_now && $month<=12 ) {
$j2g = $this->convert_date->JalaliToGregorian($year, $month, $day);
return $j2g[0]."/".$j2g[1]."/".$j2g[2];
}else {
  return '0';
}

с кодом выше у меня есть эта ошибка:

Произошла ошибка PHP

Серьезность: Уведомление

Сообщение: преобразование массива в строку

Имя файла: admin / model.php

Номер строки: 97

-

Обнаружена ошибка PHP

Важность: Уведомление

Сообщение: неопределенное смещение: 2

Имя файла: admin / model.php

Номер строки: 97

-

Обнаружена ошибка PHP

Важность: Уведомление

Сообщение: неопределенное смещение: 1

Имя файла: admin / model.php

Номер строки: 97

Ответы [ 3 ]

1 голос
/ 12 сентября 2011

Вам необходимо прочитать и понять сообщения об ошибках:

Message: Array to string conversion (Line 97)

Это означает, что вы конвертируете массив в строку. Обычно это приводит к следующей строке: "Array":

list($year, $month, $day) = explode('/', "Array", 3);//Line Number: 97

Использование этого explode в строке "Array" возвращает следующее:

array(1) {
  [0]=>
  string(5) "Array"
}

Итак, массив с одной строкой, содержащей "Array" по индексу 0. Итак:

list($year, $month, $day) = array('Array');

Результаты:

$year = "Array"; $month = NULL; $day = NULL;

Очевидно, это не то, что вы хотели. Я не знаю, что вы хотели, может быть, это?:

list($year, $month, $day) = $date;

Но, возможно, нет, потому что вы написали, что у вас есть два поля даты, а не три. См. Также ответ Марка Б .

0 голосов
/ 13 сентября 2011

Из того, что я вижу, $ date - это уже массив.

, поэтому вам нужно 3 поля ввода.

<input type="text" name="date[]">
<input type="text" name="date[]">
<input type="text" name="date[]">

, тогда $ date должно бытьмассив уже.чек var_dump($this->input->post('date'));

$date = $this -> input -> post('date');

$jdate = jgmdate("Y/m/j");
list($year_now, $month_now, $day_now) = explode('/', $jdate, 3);

$year = $date[0];
$month = $date[1];
$day = $date[2];

if($year>=$year_now && $month<=12 ) {
$j2g = $this->convert_date->JalaliToGregorian($year, $month, $day);
return $j2g[0]."/".$j2g[1]."/".$j2g[2];
}else {
  return '0';
}
0 голосов
/ 12 сентября 2011
list($year, $month, $day) = explode('/', $date, 3);//Line Number: 97

В момент запуска этой строки $ date - это массив, а не строка.Вы не можете взорвать массив.Если я правильно понимаю ваш код, вы, вероятно, захотите сделать:

foreach ($date as $d) {
    list($year, $month, $day) = explode('/', $d, 3);
}

и обработать каждую «дату», представленную в форме, отдельно.

...