0

次のようにデータが設定された配列があります

[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:new」で、それと次の「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;
}
}
4

2 に答える 2

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;
    }
}
于 2012-11-14T13:32:46.530 に答える
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);
?>
于 2012-11-14T13:38:57.030 に答える