没有一个准备好的功能。但是你可以使用array_filter来查找起点所在的数组键。接下来将它拼接起来。
<?php
$array1 = array(
0 => 'BMC305',
1 => '14:15',
2 => 'OneData',
3 => 'SecondData',
4 => ' ',
5 => 'BMC305',
6 => '14:15',
7 => 'OnlyData',
8 => ' ');
function findStartElement($var) {
return strpos($var, 'BMC') === 0;
}
$startElements = array_filter($array1, 'findStartElement');
$chunks = array();
$previousKey = null;
foreach ($startElements as $key => $value) {
if ($previousKey !== null) {
$chunks[] = array_splice($array1, $previousKey, $key - $previousKey);
}
$previousKey = $key;
}
// get remaining part.
$chunks[] = $array1;
var_dump($chunks);
?>
此外,你应该使用PHP 5.3,你可以在这里用闭包做真正的事情。
<?php
function chunkByValue($array, $value) {
$startElements = array_filter($array, function ($var) use ($value) {
return strpos($var, $value) === 0;
});
$chunks = array();
$previousKey = null;
foreach ($startElements as $key => $value) {
if ($previousKey !== null) {
$chunks[] = array_splice($array, $previousKey, $key - $previousKey);
}
$previousKey = $key;
}
// get remaining part.
$chunks[] = $array;
return $chunks;
}
$array1 = array(
0 => 'BMC305',
1 => '14:15',
2 => 'OneData',
3 => 'SecondData',
4 => ' ',
5 => 'BMC305',
6 => '14:15',
7 => 'OnlyData',
8 => ' ');
var_dump(chunkByValue($array1, 'BMC'));
?>
所以你想要遍历整个数组。如果'$ array [4] ==='something''和'$ array [4 + 1] ==='something else''然后将'$ array [4]'与'$ array [5]'合并,但是否则什么都不做? – 2013-05-10 12:00:22
嘿@ user2369834! 是否可以看到原来的\ n分隔列表?也许从这里开始会更容易。 – ljubiccica 2013-05-10 12:31:41