2014-05-01 43 views
0

這是數組:多維SplFixedArray

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

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

...等

這是使每次此數組動態(由給定的計數器),然後保存到數據庫表的代碼:

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

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

} 
self::insert($query_params); 

Ι試圖tο寫代碼,做一個多維數組SplFixedArray,但我不能!

我已經嘗試過此代碼(循環之前),但不工作:

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

謝謝!

+1

它是如何 「不工作」?它有什麼作用?它不是做什麼的?你有沒有看到任何錯誤?有什麼問題? 「不工作」不是描述問題的好方法。 –

回答

0

要創建的陣列的方式是好的,Laravel會接受它,如果你的數據庫服務器接受這些原則,但看你的代碼,我看到一些奇怪的事情:

self::insert($query_params); 

告訴我,這是一個雄辯的模式,還是我錯了?

$this->counter 

這種模式上有一個計數器,所以這不是一個乾淨的模型......

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

你一次又一次地試圖self::insert的ID?這會爲你的桌子工作嗎?

1

這裏的問題是$query_params[] = ...;不適用於SplFixedArray。當你做$query_params[] = ...;時,你在最後一個後面添加一個元素

隨着SplFixedArraycount()總是返回「固定」的大小,所以,當你推,你想添加元素其範圍之外

試試這個:

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