【问题标题】:convert php code to array将php代码转换为数组
【发布时间】:2011-11-15 14:35:39
【问题描述】:

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

【问题讨论】:

    标签: php arrays codeigniter explode


    【解决方案1】:

    您需要阅读并理解错误信息:

    Message: Array to string conversion (Line 97)
    

    意味着您将数组转换为字符串。这通常会产生以下字符串:"Array":

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

    "Array" 字符串上使用explode 会返回以下内容:

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

    因此,一个数组的一个字符串包含索引0 上的"Array"。所以:

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

    结果:

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

    显然这不是你想要的。我不知道你想要什么,也许是这个?:

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

    但也许不是,因为你写了你有两个日期字段,而不是三个。另见Marc B's answer

    【讨论】:

    • 我将这个list($year, $month, $day) = explode('/', "Array", 3);//Line Number: 97 更改为$date_array = array(1) { [0]=&gt; string(5) "$date_go" } list($year, $month, $day) = array($date_array); 它不起作用并且这个$date_array = array(1) { 行有错误:解析错误:语法错误,意外。我做的对吗?
    • 那永远行不通。您需要一个包含三个元素 (0,1,2) 的数组才能使 list 工作。请为您在问题开头概述的日期字段添加示例数据。
    • 我不明白你的意思,请修改我的代码
    • 我也有同样的问题。我不明白你的意思。请更改您的问题。请具体说明您要查找的内容,具体的输入数据是什么,在表单字段中输入了哪些值?
    【解决方案2】:
    list($year, $month, $day) = explode('/', $date, 3);//Line Number: 97
    

    在这一行运行时,$date 是一个数组,而不是字符串。你不能爆炸一个数组。如果我正确理解您的代码,您可能想要这样做:

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

    并分别处理从表单提交的每个“日期”。

    【讨论】:

    • 此更改有两个错误:Message: Undefined offset: 1Message: Undefined offset: 2。 !?
    【解决方案3】:

    据我所知,$date 已经是一个数组了。

    所以,您需要 3 个输入字段。

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

    那么 $date 应该已经是一个数组了。检查var_dump($this-&gt;input-&gt;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';
    }
    

    【讨论】:

      猜你喜欢
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-16
      • 2013-10-04
      • 1970-01-01
      • 2015-03-02
      相关资源
      最近更新 更多