我使用codeigniter,我将两个输入作为数组发送到下面的PHP代码,但是下面的PHP代码不能将它作为数组,如何更改PHP代码获取值数组?
<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
答案 0 :(得分:1)
您需要阅读并理解错误消息:
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;
但也许不是,因为你写道你有两个日期字段,而不是三个。另见Marc B's answer。
答案 1 :(得分:0)
list($year, $month, $day) = explode('/', $date, 3);//Line Number: 97
此行运行时,$ date是一个数组,而不是一个字符串。你不能爆炸数组。如果我正确理解你的代码,你可能想要这样做:
foreach ($date as $d) {
list($year, $month, $day) = explode('/', $d, 3);
}
并单独处理从表单提交的每个“日期”。
答案 2 :(得分:0)
从我看到,$ 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';
}