php中出現Strict Standards: Only variables should be passed by reference in的解決方法


  今天在練習一個小demo的時候,在localhost文件中出現了這樣的notice,具體的原因和解決方法做如下分析。

  題目:已知一個字符串如下,將其最后兩項轉換為數組。

 

  $week = "Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday";

  主要的思路:1. 先使用explode()函數將字符串進行分割,因該函數的結果會返回一個數組,所以分割的部分會獨立的存入該數組中。

        2. 再使用array_splice()函數,返回從某個位置開始,包含有被移除單元的數組。

  解答如下:

$week1 = "Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday"; $str = array_splice(explode(",", $week1), -2); echo '<pre>'; print_r($str); echo '</pre>'; echo '<br/>';

  輸出結果:

  

  發現php給出了這樣的一個提示。

  上網查了一下,發現其大致意思是:只有變量才能通過引用傳遞。沒看明白,繼續查。

  最終發現,PHP5.3以上默認只能傳遞具體的變量,而不能通過函數返回的值傳遞變量。

  上述代碼中,

  

explode(",", $week1);

  這一句代碼,其本身不能作為變量進行引用(reference)。

  所以代碼應該做如下改變:

  

$week2 ="Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday"; $str = explode(",", $week2); echo "<br/>"; echo '<pre>'; print_r($str); echo '</pre>'; echo '<br/>'; $array = array_splice($str,-2); echo '<pre>'; print_r($array); echo '</pre>';

  輸出結果:

  

  發現提示消失,正常輸出結果。


  其實,使提示消失的方法還有一種,就是使用

  error_reporting(0); 關閉所有notice和warning級別的錯誤。

  雖然關閉錯誤報告確實能不鬧心,但盲目的忽視錯誤卻是致命的。

  

  

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM