从CodeIgniter中的post数组中获取数据

时间:2010-06-24 18:08:15

标签: php codeigniter

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

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

这不起作用。 PHP说“意外”['“。为什么这不起作用?

我通过这样做来修复它:

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

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

5 个答案:

答案 0 :(得分:9)

PHP不支持从函数调用中取消数组。它是在PHP的SVN主干版本中实现的,因此它很可能会成为PHP的未来版本。现在你将不得不诉诸你现在正在做的事情。对于枚举数组,您还可以使用list

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

请参阅:http://php.net/list

答案 1 :(得分:8)

这样的语法:

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

。你应该做你正在做的事情:

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

答案 2 :(得分:6)

另一种方法可能是使用foreach来迭代数组,如下所示:

foreach($this->input->post("days") as $day){
    echo $day;
}

答案 3 :(得分:1)

除了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数组,第二个是保护变量冲突,第三个是   前缀。

有关 extract() 的更多信息,请参阅this

希望这会有所帮助:)

答案 4 :(得分:-1)

我会一直这样做..

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

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

干杯..