как заказать в то время как цикл? - PullRequest
1 голос
/ 21 января 2012

Я хочу получить количество символов из следующих слов в строке. Например, если мой ввод 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 ]

3 голосов
/ 21 января 2012

Если вы просто хотите получить вывод в обратном порядке, используйте array_reverse:

print_r(array_reverse($words_length));
1 голос
/ 21 января 2012

Ваша проблема в том, что вы просматриваете слова слева направо. Вы не можете вывести полную длину справа налево, потому что каждое зависит от слов слева.

Вы можете вывести 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));
1 голос
/ 21 января 2012

Самое быстрое решение - добавить print_r(array_reverse($words_length)); после цикла

0 голосов
/ 21 января 2012

Вы можете использовать foreach и array_reverse, чтобы получить значения массива:

foreach(array_reverse($words_length) as $val){
echo $val;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...