Php 将字符串分隔为行时未显示最后一个单词
在$arrTemp上使用var_dump时,缺少最后一个字 我看不出有什么不对,我是个新手 如果字符串达到20个字符,则此代码将其分隔为行Php 将字符串分隔为行时未显示最后一个单词,php,Php,在$arrTemp上使用var_dump时,缺少最后一个字 我看不出有什么不对,我是个新手 如果字符串达到20个字符,则此代码将其分隔为行 $arrMessage = str_split(stripcslashes("test asdasd")); $arrTemp = array(); $line = 0; $word = array(); $arrTemp[$line] = array(); foreach($arrMessage as $char) { if($char ==
$arrMessage = str_split(stripcslashes("test asdasd"));
$arrTemp = array();
$line = 0;
$word = array();
$arrTemp[$line] = array();
foreach($arrMessage as $char) {
if($char == " ") {
//calculate numbers of chars currently on line + number of chars in word
$numTotalChars = count($word) + (int) count($arrTemp[$line]);
//if total > 20 chars on a line, create new line
if($numTotalChars > 20) {
$line++;
$arrTemp[$line] = array();
}
$word[] = $char;
//push word-array onto line + empty word array
$arrTemp[$line] = array_merge($arrTemp[$line], $word);
$word = array();
} else {
//if word is too long for a line, split it
if( count($word) > 20) {
$numTotalChars = (int) count($word) + (int) count($arrTemp[$line]);
if($numTotalChars > 20) {
$line++;
$arrTemp[$line] = array();
}
$arrTemp[$line] = array_merge($arrTemp[$line], $word);
$word = array();
}
$word[] = $char;
}
}
问题是,当您到达一个空格时,您只向
$arrTemp
添加一个单词,但在输入字符串的末尾没有空格
<?php
$arrMessage = str_split(stripcslashes("adriano asdasd"));
$arrTemp = array();
$line = 0;
$word = array();
$arrTemp[$line] = array();
foreach($arrMessage as $char) {
if($char == " ") {
//calculate numbers of chars currently on line + number of chars in word
$numTotalChars = count($word) + count($arrTemp[$line]);
//if total > 20 chars on a line, create new line
if($numTotalChars > 20) {
$line++;
$arrTemp[$line] = array();
}
$word[] = $char;
//push word-array onto line + empty word array
$arrTemp[$line] = array_merge($arrTemp[$line], $word);
$word = array();
} else {
//if word is too long for a line, split it
if( count($word) > 20) {
$numTotalChars = count($word) + count($arrTemp[$line]);
if($numTotalChars > 20) {
$line++;
$arrTemp[$line] = array();
}
$arrTemp[$line] = array_merge($arrTemp[$line], $word);
$word = array();
}
$word[] = $char;
}
}
// Add last word if there's something left over
if (count($word)) {
$numTotalChars = count($word) + count($arrTemp[$line]);
if ($numTotalChars > 20) {
$line++;
$arrTemp[$line] = array();
}
//push word-array onto line + empty word array
$arrTemp[$line] = array_merge($arrTemp[$line], $word);
}
var_dump($arrTemp);
请忽略此注释:str_split(stripcslashes(“adriano asdasd”);。这里有一个输入错误,它必须是str_split(stripslashes(“adriano asdasd”);。您有一个针对此类错误的调试器。@Barmar哇!!我不使用这个函数已经很长时间了。我不再依赖这些函数了。不管怎样,感谢你给我指出tha?只需删除你的评论,而不是在count()
之前添加“忽略此”你不需要(int)
,它总是返回一个整数。现在,最后一个字符是重复的