总是出现非数值

我正在尝试将此 Javascript 代码翻译成 PHP,但是当我这样做时,它会给我一条非数字值的消息。


每次我 var dump 时count($fin),它都会给我一个与console.logJavaScript 中不同的索引。


JavaScript 中的代码:


var countAndSay = function(n) {

    var str = '1';

    for (var i=1; i < n; i++) {     

        var strArray = str.split('');

        str ='';

        var count = 1;

        // Loop through current nth level line

        for (var j=0; j < strArray.length; j++) {

            // Next digit is different

            if (strArray[j] !== strArray[j+1]) {

                // Go to next non-matching digit

                str += count + strArray[j];

                count = 1;

            } else {

                count++;

            }

        }

    }

    return str;

};

console.log(countAndSay(45));

这是我的 PHP 代码:


function countAndSay($n) { 

    $str = "1";  

    for ($i = 1; $i < $n; $i++) { 

        $fin = str_split($str);

        $str = "";

        $len = count($fin); 

        $cnt = 1;

        for ($j = 0; $j < $len; $j++) { 

            if ($fin[$j] !== $fin[$j +1]) { //error for non numeric value

                $str += $cnt + $fin[$j]; 

                $cnt = 1; 

            } else {

                $cnt++; 

            }

        }

    }

    return $str; 

}

echo countAndSay(9); 


catspeake
浏览 135回答 1
1回答

不负相思意

在 JavaScript 中,该+运算符也是字符串连接运算符,而在 PHP 中+始终是算术加法。对于 PHP 中的串联,您应该使用.运算符。其次,在 JavaScript 中,您可以在数组中使用超出范围的索引(这会为您提供一个值undefined),而在 PHP 中,它会产生异常。这在您的代码中发生 when $j+1is equal to $len,因此您应该添加一个条件来处理这种情况。这是您需要更正的部分:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // protect against out of range index:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if ($j+1 >= $len or $fin[$j] !== $fin[$j +1])&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // Use string concatenation operator&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $str .= $cnt . $fin[$j];&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $cnt = 1;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP