多维SplFixedArray

时间:2014-05-01 15:04:21

标签: php arrays multidimensional-array laravel

这是数组:

Array
(
    [0] => Array
        (
            [ID] => 74
            [coupon] => fCHzP
        )

    [1] => Array
        (
            [ID] => 74
            [coupon] => WKHaY
        )
)

...等

这是每次动态(通过给定计数器)生成此数组的代码,然后保存到db表中:

for($i=0;$i < $this->counter;$i++){

  $query_params[ ] = array('ID' => $this->ID , 'coupon' => make_random());

}
self::insert($query_params);

trying尝试编写一个用 SplFixedArray 制作多维数组的代码,但我不能!

我已经尝试过此代码(循环之前),但无效:

$query_params = new SplFixedArray($this->counter);

谢谢!

2 个答案:

答案 0 :(得分:1)

此处的问题是$query_params[] = ...;无法与SplFixedArray一起使用。当您执行$query_params[] = ...;时,您将在之后添加元素。

SplFixedArray count()始终返回&#34;已修复&#34;大小,所以当你推动时,你试图在其范围外添加 元素。

试试这个:

$query_params = new SplFixedArray($this->counter);
for($i=0; $i < $this->counter; $i++){
  $query_params[$query_params->key()] = array('ID' => $this->ID , 'coupon' => make_random());
  $query_params->next();
}

或者,更好的是:

$query_params = new SplFixedArray($this->counter);
for($i=0; $i < $this->counter; $i++){
  $query_params[$i] = array('ID' => $this->ID , 'coupon' => make_random());
}

答案 1 :(得分:0)

你创建数组的方式很好,如果你的数据库服务器接受这些行,Laravel会接受它,但看看你的代码我看到了一些奇怪的东西:

self::insert($query_params);

告诉我这是一个雄辩的模型,还是我错了?

$this->counter

这个模型有一个计数器,所以这不是一个干净的模型...

array('ID' => $this->ID , 'coupon' => make_random());

您是否一次又一次尝试self::insert ID?这对你的桌子有用吗?