亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

總是出現非數值

總是出現非數值

PHP
catspeake 2023-05-26 09:27:38
我正在嘗試將此 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); 
查看完整描述

1 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

在 JavaScript 中,該+運算符也是字符串連接運算符,而在 PHP 中+始終是算術加法。對于 PHP 中的串聯,您應該使用.運算符。


其次,在 JavaScript 中,您可以在數組中使用超出范圍的索引(這會為您提供一個值undefined),而在 PHP 中,它會產生異常。這在您的代碼中發生 when $j+1is equal to $len,因此您應該添加一個條件來處理這種情況。


這是您需要更正的部分:


            // protect against out of range index:

            if ($j+1 >= $len or $fin[$j] !== $fin[$j +1])

            { 

                // Use string concatenation operator

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

                $cnt = 1; 

            } 


查看完整回答
反對 回復 2023-05-26
  • 1 回答
  • 0 關注
  • 159 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號