iT邦幫忙

0

PHP 資料庫取值字串型態問題與解決紀錄

  • 分享至 

  • xImage
  •  

問題描述
資料庫欄位型態裡面設定的型態是varchar
https://ithelp.ithome.com.tw/upload/images/20220221/20146740fIZtU3KvbW.png
但在php裡面取值時(如下面程式碼),有可能取到integer的型態

$array_function = array();
for($i=0;$i<$dataCount;$i++){
 $result_arr = mysqli_fetch_assoc($result);
 $fn = $result_arr['function_name'];
 $array_function[$fn] = array();
}

查了以後發現即使你mysql裡面設定是varchar,但你用php取值後,若是你的資料是整數,他還是會認成是整數的型態
https://ithelp.ithome.com.tw/upload/images/20220221/20146740AJFJkdeyDZ.png
PHP陣列索引
陣列索引部分可以是整數,也可以是字串,就依據你想要的型態。
所以在設定的時候我會把上面的code改成

$array_function["$fn"] = array();

讓他always是字串型態,因為你的索引有整數也有字串會混淆

單引號跟雙引號的差別
PHP 會編譯「雙引號」字串內的變數,而「單引號」則視為純字串輸出,所以單引號會讓 PHP 執行速度比較快
而上面的例子$array_function[“$fn”],他就是把$fn經過了編譯變成了字串,讓我得索引都能是字串的型態

php轉型成字串

  1. 用strval()轉型成字串
strval($variableName);
  1. 顯式轉換
$string = (string)$intVariable
  1. 利用雙引號編譯
$variable = 1111111;
$string1 = “$variable”;

雙引號怎麼顯示特殊符號
反斜線

$test = 123;
echo "$test";
echo "<br>";
echo "\$test";

https://ithelp.ithome.com.tw/upload/images/20220221/20146740XYFQiTRFkR.png

結論

  1. PHP 設計師通常會利用反斜線(\)跳脫字元,讓單引號(’)或雙引號(”)能夠 echo 出來
  2. PHP 會編譯「雙引號」字串內的變數,而「單引號」則視為純字串輸出,單引號會讓 PHP 執行速度比較快
  3. “$func”跟(string)$func會等價,因為雙引號會編譯變數內容

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言