我想从字符串中的以下单词中获取字符数。例如,如果我的输入是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
为什么?我的错误在哪里?如何更改订单?
我的代码必须是什么样的?
提前谢谢!
答案 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;
}