1 回答
TA贡献1850条经验 获得超11个赞
解决方案1:在for循环中迭代数组,如果当前元素是ABC,DEF则下一个是,GHI然后将其添加到结果中。
<?php
$input = [
'ABC', //
'DEF', //
'GHI', //
'ABC',
'DEF',
'ABC', //
'DEF', //
'GHI', //
'ABC',
'GHI',
'DEF',
];
// 1
$result = [];
for($i=0;$i<count($input)-2;$i++) {
if ($input[$i] === 'ABC' && $input[$i+1] === 'DEF' && $input[$i+2] === 'GHI') {
$result[] = $input[$i];
$result[] = $input[$i+1];
$result[] = $input[$i+2];
}
}
var_dump($result);
ABCDEFGHI解决方案 2 是一个额外的好处 - 不同的方法:将此数组加载到一个长字符串中,搜索在该字符串中可以找到多少次。多次重复此字符串并将其以 3 个字符块的形式加载回数组:
// 2
$result = str_split(str_repeat('ABCDEFGHI', substr_count(implode('', $input), 'ABCDEFGHI')), 3);
var_dump($result);
输出:
array(6) {
[0]=>
string(3) "ABC"
[1]=>
string(3) "DEF"
[2]=>
string(3) "GHI"
[3]=>
string(3) "ABC"
[4]=>
string(3) "DEF"
[5]=>
string(3) "GHI"
}
array(6) {
[0]=>
string(3) "ABC"
[1]=>
string(3) "DEF"
[2]=>
string(3) "GHI"
[3]=>
string(3) "ABC"
[4]=>
string(3) "DEF"
[5]=>
string(3) "GHI"
}
- 1 回答
- 0 关注
- 98 浏览
添加回答
举报