Php 将字符串分隔为行时未显示最后一个单词

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 ==

在$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 == " ") {
        //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)
,它总是返回一个整数。现在,最后一个字符是重复的