【问题标题】:Multidimensional SplFixedArray多维 SplFixedArray
【发布时间】:2014-06-18 02:11:39
【问题描述】:

这是数组:

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);

我试图编写一个代码,用 SplFixedArray 创建一个多维数组,但我不能!

我已经尝试过这段代码(循环之前),但不起作用:

$query_params = new SplFixedArray($this-&gt;counter);

谢谢!

【问题讨论】:

  • 它是如何“不工作”的?它有什么作用?它不做什么?你看到任何错误吗?有什么问题? “不工作”不是描述问题的好方法。

标签: php arrays multidimensional-array laravel


【解决方案1】:

这里的问题是$query_params[] = ...; 不适用于SplFixedArray。当您执行$query_params[] = ...; 时,您将添加一个元素最后一个元素之后。

SplFixedArray count() 总是返回“固定”大小,所以当你推送时,你试图在其范围之外添加一个元素。

试试这个:

$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());
}

【讨论】:

    【解决方案2】:

    您创建数组的方式很好,如果您的数据库服务器接受这些行,Laravel 将接受它,但查看您的代码我发现一些奇怪的事情:

    self::insert($query_params);
    

    告诉我这是一个 Eloquent 模型,还是我错了?

    $this->counter
    

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-03-24
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-03
      • 2013-12-01
      • 2011-09-20
      相关资源
      最近更新 更多