準備ができている関数は 1 つではありません。ただし、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'));
?>