php数组迭代 - 未设置

时间:2011-03-14 14:34:37

标签: php arrays

回到我原来的问题,关于如何检查下一个元素是否以空格开头,如果是,则将它连接到前一个元素。你将如何处理数组有多个级别的情况。

[1] => Array (
    [1] => Packages
    [2] => Sources
    [3] =>  Reading package
    [4] =>  Sources
    [5] =>  More Sources
    [6] => volatile Sources
    [7] =>  volatile
)

输出:

[2] => Array (
    [1] => Packages
    [2] => Sources Reading package Sources More Sources
    [6] => volatile Sources volatile
)

将为第一个空间做到这一点。

for($i = 0; $i < count($array); $i++){
    if($array[$i][0] == ' '){
        if($i > 0){
             $array[$i-1] .= $array[$i];
             unset($array[$i]);
        }
    }
}

3 个答案:

答案 0 :(得分:0)

这应该有效(未经测试):

$size = count($array);
for($i = 0; $i < $size; $i++){
    $space = true;
    for($j = $i + 1; $j < $size && $space; $j++) {
        $space = $array[$j][0] == ' ';
        if($space){
             $array[$i] .= $array[$j];
             unset($array[$j]);
        }
    }
}

答案 1 :(得分:0)

如果你可以确定任何元素中没有特定字符(例如|),你可以这样做:

$array = explode('|',str_replace('| ',' ',implode('|',$array)));

答案 2 :(得分:0)

$t = array ( 'Packages',
             'Sources',
             ' Reading package',
             ' Sources',
             ' More Sources',
             'volatile Sources',
             ' volatile'
           );


$n = '';
foreach($t as $k => $v) {
    if (substr($v,0,1) == ' ') {
        $t[$n] .= $v;
        unset($t[$k]);
    } else {
        $n = $k;
    }
}

var_dump($t);