如何在while循环中订购?

时间:2012-01-21 16:06:25

标签: php algorithm loops while-loop

我想从字符串中的以下单词中获取字符数。例如,如果我的输入是I am John,则输出必须如下:

9 // count of 'I am John'
4 // count of 'I am'
1 // count of 'I'

我在PHP中使用这样的代码来完成这个过程:

$string = 'I am John';
$words = explode(' ',$string);
$count_words = count($words);

$i =0;
while ($i<$count_words){
    if($i==0) {
    $words_length[$i] = strlen($words[$i]);
    } else {
    $words_length[$i] = strlen($words[$i])+1+$words_length[$i-1];
    }
    echo $words_length[$i]."<br>";
    $i++;
}

但它会像这样返回输出:

1
4
9

为什么?我的错误在哪里?如何更改订单?
我的代码必须是什么样的? 提前谢谢!

4 个答案:

答案 0 :(得分:3)

如果您只想以相反的顺序输出,请使用array_reverse

print_r(array_reverse($words_length));

答案 1 :(得分:1)

最快的解决方法是在循环

之后添加print_r(array_reverse($words_length));

答案 2 :(得分:1)

你的问题是你从左到右循环。你不能从右到左输出全长,因为每一个都依赖于左边的单词。

您可以将echo取出循环,并在计算完所有值后打印这些值。

$string = 'I am John';
$words = explode(' ',$string);
$count_words = count($words);

$i =0;
while ($i<$count_words){
    if($i==0) {
        $words_length[$i] = strlen($words[$i]);
    } else {
        $words_length[$i] = strlen($words[$i])+1+$words_length[$i-1];
    }
    $i++;
}

print implode('<br />', array_reverse($words_length));

答案 3 :(得分:0)

您可以使用foreach和array_reverse来获取数组值:

foreach(array_reverse($words_length) as $val){
echo $val;
}