代码之家  ›  专栏  ›  技术社区  ›  gen_Eric

从编码点火器后阵列获取数据

  •  8
  • gen_Eric  · 技术社区  · 14 年前

    好的,我有一个表单,它在post数组中向我发送数组。我试着这样读:

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

    这不管用。php说“意外的”[“”。为什么这不起作用?

    我通过这样做来修复它:

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

    我解决了我的问题,我只是好奇为什么第一种方法不起作用。

    5 回复  |  直到 8 年前
        1
  •  9
  •   Daniel Egeberg    14 年前

    PHP不支持从函数调用中取消数组屏蔽。它是在PHP的SVN主干版本中实现的,因此它很可能成为未来的PHP版本。现在,你必须求助于你现在所做的。对于枚举数组,也可以使用 list :

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

    见: http://php.net/list

        2
  •  8
  •   Sarfraz    14 年前

    语法如下:

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

    php不支持。你应该做你正在做的事情:

    $days = $this->input->post("days");
    $day = $days[0];
    
        3
  •  6
  •   Matthew    8 年前

    另一种方法是通过使用 foreach 像这样:

    foreach($this->input->post("days") as $day){
        echo $day;
    }
    
        4
  •  1
  •   Community Romance    7 年前

    除了 Daniel Egeberg 答案是:

    请注意 list() 只适用于 数字阵列 . 如果你/任何人想阅读 联想的 类数组,

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

    使用 extract() 在上面的数组上的函数为,

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

    现在可以使用以下变量作为,

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

    注: 在上面的函数中,第一个参数是post数组,第二个参数是防止变量冲突,第三个参数是 前缀。

    更多关于 提取() 参考 this .

    希望这有帮助:)

        5
  •  -1
  •   Raghu Acharya    8 年前

    我总是喜欢这样……

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

    如果需要通过检查视图作为数组传递的每个值来与数据库交互,这将非常有用。否则我更喜欢foreach循环。

    干杯。。