2013年7月25日 星期四

[PHP]定義常數我們都會,但是如果我的常數的值是Array呢?

身為一個知識粗淺的前端
寫php,遇到問題就是求救stackoverflow...


php是怎麼定義常數的?
常數是什麼,我都這樣記的:固定的數字。
什麼是固定的數字呢?絕對不是你的三圍,舉個例子來說,數學的pi是3.14159..
pi是一個不會改變的數字,因此如果是我,並不會把它(pi)拿來當變數
(簡單來講變數是會變的數字,比方說我的三圍),而常數就是不變的數字。



因此我會這樣定義pi:
defind('常數命名',常數的值可以是字串或是數字);
define('PI',3.14159);
這樣就是定義好PI這個常數了。




定義常數有幾個特性:

  • '通常'常數的命名會以英文大寫表示,主要是想跟一般的變數做區隔,或是讓其他coding的人知道,該變數之所以是大寫,是有特定的意義存在,如沒有必要,盡量不要去更動。
  • 通常常數只會宣告一次,常見的情況是一個網站裡面有一個congif檔案,裡面可能寫入整個網站會用的常數。
  • 常數的前面是沒有$符號,這點跟變數不太一樣
    • 例,echo一個變數:echo $my_weight;
    • 例,echo一個常數:echo WEB_SITE_NAME;
  • 常數的值只能是數字或字串...m...




因此我今天就在想,我該如何定義一個常數,可是值是Array呢?
第一次我就這樣寫:
define('MY_HOUSE_LOCATION',array("台北"=>"忠孝東路", "台中"=>"XXX路", "嘉義"=>"XXX路") );
天真的以為可以這樣寫,但這真是一個很慘的寫法啊..完全不能用。





其中一個答案是可以使用serialize();
不過我不確定是否有其他方式,我只能說我查到了這個方法

定義的時候這樣用:
  • define("MY_HOUSE_LOCATION", serialize(array("台北"=>"忠孝東路",  "台中"=>"XXX路", "嘉義"=>"XXX路")));
用的時候這樣寫,要記得unserialize():
  • $my_house_location = unserialize(MY_HOUSE_LOCATION);
foreach($my_house_location as $k=>$v){
        //看你想做什麼
 }








沒有留言:

張貼留言

若你看的文章,時間太久遠的問題就別問了,因為我應該也忘了... XD

Vue multiselect set autofocus and tinymce set autofocus

要在畫面一進來 focus multiselect 的方式: 參考: https://jsfiddle.net/shentao/mnphdt2g/ 主要就是在 multiselect 的 tag 加上 ref (例如: my_multiselect), 另外在 mounted...