2011-07-18 98 views
2

以下切片$ scpar成兩種類型一個含有第一9和含有從10前逗號分隔值的第二至18PHP陣列切片的多個陣列非功能

$scpar9 = array_slice($scpar,0,9); 
     $scpar18 = array_slice($scpar,9,18); 

然後,我們使用foreach和使用一個ID參數$sid從其他字段獲得相同的逗號分隔值。

foreach ($scpar9 as $sid => $scpar) { 

然後信息從這樣的其他領域被採取。

<b>'.$scpar.'</b> '.$sccomp[$sid].$scmen[$sid]. 

這一切都正常工作,問題是與第二個9領域。

foreach ($scpar18 as $sid => $scpar) { 
<b>'.$scpar.'</b> '.$sccomp[$sid].$scmen[$sid]. 

領域$scpar是正確的,但含有[$sid]的那些從第一個結果而不是開始第九。

任何想法?

非凡

+0

你爲什麼將這些數據分成兩個數組?會不會更好? –

+0

你能向我解釋那是怎麼做的 –

回答

1

你需要使用preserve_keys

preserve_keys: 注意array_slice()將重新排序並重置數組索引 默認。您可以通過將preserve_keys設置爲 TRUE來更改此行爲。

$scpar18 = array_slice($scpar,9,18, true); 
+0

幹得好...... –

1

array_slice()創建包含從原來的陣列,而不是鍵新的陣列。使用foreach循環中的鍵在原始數組的上下文中沒有意義,因爲這些是新切片數組的鍵。

使用array_slice($scpar, 9, 18, true)複製鍵爲好,而不僅僅是值:

$scpar18 = array_slice($scpar, 9, 18, true); 
            # ^^^ preserve keys