将PHP代码转换为数组

时间:2011-09-12 19:17:21

标签: php arrays codeigniter explode

我使用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

3 个答案:

答案 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';
}