作者liaosankai (低溫烘焙)
看板PHP
標題Re: [請益] session使用
時間Sun Oct 19 00:22:26 2008
※ 引述《pppppppMAN (QQ)》之銘言:
: 我必須要在$_SESSION['']的單引號中使用變數$s
: 請問要怎麼在單引號中使用變數@@"
: 試過'"$s"'還是不行 這樣等於送出"$s"字串
通常我的做法是直接給變數,不加單引號也不加雙引號
$_SESSION[$key];
----------------------------------------------------
另外補充作者想知道單引號與雙引號的差別
單引號:所有在單引號''的字串一律視為純字串,PHP系統不再去判斷
是否有PHP變數的存在
雙引號:系統會去判斷""中的字串裡,是否有含有變數名稱的字串
有的話先進行轉換
下列每行輸出的結果都是一樣的
$str1 = "這是變數{$var1},{$var2}"; //建議使用這種寫法
$str1 = "這是變數$var1,$var2";//
$str1 = "這是變數".$var1.",".$var2;
$str1 = '這是變數'.$var1.','.$var2;
但請注意,若有使用到特殊字元,那麼你就必需使用雙引號
下列那個結果是不一樣的
$str2 = "有斷行\n"; (\n會轉為看不見的斷行字元)
$str2 = '有斷行\n'; (\n會被視為字串直接輸出)
或許你有個疑問「就全用雙引號就好了呀?」
那麼請看下列說明
1. $_SESSION['key']
2. $_SESSION["key"]
3. $_SESSION[key]
上面三個索引都輸出相同的值,但是執行效率不同
其中第一種將會是最有效率的作法
若你已經到需要考慮到效能,可以看看下篇文章:
PHP 程式效能優化的 40 條建議
http://jersus.blogspot.com/2008/03/php-40.html
個人習慣是若這個字串中沒有任何變數,我就使用''
若字串中含有變數(通常是用在刻SQL字串時)我就使用""
例如$sql = "SELECT * FROM table WHERE id = {$id}";
在陣列索引中,若不是變數索引,一律使用''
若是變數索引,就直接給予變數
例如 $arr['mykey'];
$arr[$key];
--
歡迎來我的網誌看看
@
http://doublekai.org/blog
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.240.37.127
推 foxzgerald :$_SESSION[key] 應該不能跑吧?! 10/19 00:25
推 chph :可以, 看設定, 不過這是很不好的習慣就是了.. 10/19 00:32
推 foxzgerald :如果要設定..是要修改哪個地方? 10/19 00:32
推 LPH66 :基本上它能跑的原因是因為PHP發現先前沒有定義過叫做 10/19 13:57
→ LPH66 :key的常數 在此之下PHP會視為那東西的值為"key" 10/19 13:58
→ LPH66 :(另外自行定義常數可以利用define) 10/19 13:59
→ LPH66 :所以基本上你是不知道別人有沒有define('key',...); 10/19 14:00
→ LPH66 :當然就不一定能保證會跑了 10/19 14:00