Php 如何根据数组的值组合连续键?

Php 如何根据数组的值组合连续键?,php,arrays,Php,Arrays,我有一个类似的数组: $stuff = array("a"=>"115","b"=>"0","c"=>"1","d"=>"0","e"=>"11","f"=>"326","g"=>"9","h"=>"1","i"=>"12","j"=>"0","k"=>"56"); 我想做的是只在键的字符串是连续的并且它们的值小于10的地方连接它们-注意,这包括保持值小于10的单独键。我不需要保留实际值。换言之,这种情况下的预期结果是: Arr

我有一个类似的数组:

$stuff = array("a"=>"115","b"=>"0","c"=>"1","d"=>"0","e"=>"11","f"=>"326","g"=>"9","h"=>"1","i"=>"12","j"=>"0","k"=>"56");
我想做的是只在键的字符串是连续的并且它们的值小于10的地方连接它们-注意,这包括保持值小于10的单独键。我不需要保留实际值。换言之,这种情况下的预期结果是:

Array ( [0] => bcd [1] => gh [2] => j)

所以可能只有两个连续的键需要连接,或者可能有更多的键(例如多达5个)。我不知道如何通过阵列“向前看”来实现这一点。

你不需要向前看,但要记住过去

$consecutive = '';
foreach($stuff as $k => $v) {
    if ($v < 10) // or what ever condition you need
        $consecutive .= $k;
    else {
        if ($consecutive) $res[] = $consecutive; // if exist add it 
        $consecutive= ''; // and reset 
    }
}
if ($con) $res[] = $con; //adding last element if exist as @Joffrey  comment 
$concertive='';
foreach($k=>v){
如果($v<10)//或者您需要什么条件
$连续=$k;
否则{
if($contracted)$res[]=$contracted;//如果存在,则添加它
$concertive='';//并重置
}
}
如果($con)$res[]=$con//如果存在@Joffrey comment,则添加最后一个元素
现在,
$res
将成为您的愿望输出


实例:

您需要在循环外进行额外的测试,以便在循环结束时添加一个可能的非空
连续
data@JoffreySchmitz绝对正确-编辑-谢谢!