2012-11-14 135 views
0

之間我與數據載列的陣列如下PHP分裂陣列在值

[0] =>"npage:new", 
[1] =>"data:data", 
[2] =>"data:data", 
[3] =>"npage:new", 
[4] =>"data:data", 
[5] =>"data:data", 
[6] =>"data:data", 
[7] =>"npage:new", 
[8] =>"data:data", 
[9] =>"data:data", 

進出口試圖重新排列陣列,使得在每個「NPAGE:新的」它爲它創建的數據的另一索引和下一個「npage:new」。直到最後一組沒有「npage:new」但仍然需要索引。 例子:

[0] =>  
    "data:data", 
    "data:data", 
[1] => 
    "data:data", 
    "data:data", 
    "data:data", 
[2] => 
    "data:data", 
    "data:data", 

我有以下,但它返回一個空數組&我想我是在複雜的事情。

$source[] = the array 
    $destination = array(); 
$startval = "new"; 
$found = 0; 
$starindex = 0; 

foreach ($source as $index => $value){ 
if ($value === $startval) { 
$found = $value; 
$startindex = $index; 
} 
    elseif ($value === $found) { 
$destination[] = array_slice($source, $startindex, $index - $startindex + 1); 
$found = 0; 
} 
} 

回答

0

參見:http://codepad.org/QCWTAhnq

<?php 
$source = array("npage:new", "data:data", "data:data", "npage:new", "data:data", "data:data", "data:data", "data:data", "npage:new", "data:data", "npage:new", "data:data", "data:data"); 
$final = array(); 
$newpage = "npage:new"; 

$temp = array(); 

foreach ($source as $index => $value) { 
    if ($value == $newpage) { 
     if(!empty($temp)) { 
      $final[] = $temp; 
      $temp = array(); 
     } 
    } 
    else { 
     $temp[] = $value; 
    } 
} 

if(!empty($temp)) 
    $final[] = $temp; 

print_r($final); 
?> 
+0

感謝!這並獲得成功。 – brad

0

這是一個很長的時間,因爲我不寫PHP的,但嘗試這樣的事:

$source[] = the array 
$destination = array(); 
$startval = "new"; 
$ix = -1; 

foreach ($source as $index => $value) { 
    if ($value === $startval) { 
     $ix++; 
     $dest[$ix] = array(); 
    } 
    else { 
     array_push($dest[$ix], $index.":".$value; 
    } 
}