2012-11-15 61 views
1

我正在閱讀一個excell文件與PHP。沒有問題,但我堅持一點邏輯部分。我想創建一個包含數據的多個其他數組的數組。PHP邏輯循環步驟5

數據提供在我的excell文件中我知道從哪一列開始閱讀,但不知何時停止,因爲這是動態的。

我的問題是如何建立一個循環來讀取我的列,並在每一列上創建一個新數組。

,所以我想是這樣的:

(My data for the excell file is proved in $line[] each column has its number.) 
     array(
     'length' => $line[15], 
     'width' => $line[16] 
     'price_per' => $line[17], 
     'price' => $line[18], 
     'stock' => $line[19] 
    ), 
    array(
     'length' => $line[20], 
     'width' => $line[21] 
     'price_per' => $line[22], 
     'price' => $line[23], 
     'stock' => $line[24] 
    ), 
    array(
     'length' => $line[25], 
     'width' => $line[26] 
     'price_per' => $line[27], 
     'price' => $line[28], 
     'stock' => $line[29] 
    ), .... 

那麼,怎樣才能讓我這個動態的(循環?),所以我有1個大的索引數組,有多個asscociated陣列?注意:我的for循環應該總是從行[15]出來!

回答

1
for($i = 15; $i < ????; $i += 5) 
{ 
    $your_array[] = array(
     'length' => $line[$i], 
     'width' => $line[$i+1] 
     'price_per' => $line[$i+2], 
     'price' => $line[$i+3], 
     'stock' => $line[$i+4] 
    ); 
} 

更換????通過行數

6

首先,如果$line有你不想處理任何元素(如第15作爲例子說明),切它們趕走array_slice

$line = array_slice($line, 15); 

然後使用array_chunk到原來的陣列分開成多件有:

$chunks = array_chunk($line, 5); 

然後,把每塊到自己的陣列通過使用array_combine正確密鑰的每個值相關聯:

$results = array(); 
$keys = array('length', 'width', 'price_per', 'price', 'stock'); 
foreach ($chunks as $chunk) { 
    $results[] = array_combine($keys, $chunk); 
} 
+0

我喜歡它,他不得不刪除,雖然三個第一陣列(在他的特殊情況下) – Bgi

+0

+1該死的,我究竟是如何重寫我的答案;不要忘記首先從索引15開始分片:) –

+1

@Bgi:編輯考慮到這一點,謝謝。 – Jon