2016年4月28日
2016年4月26日
2016年4月21日
憂鬱,躁鬱,傻傻分不清楚─認識躁鬱症
圖片來源:everyday Health |
在眾多的心理疾患當中,我覺得躁鬱症(Bipolar Disorder)是最容易被大家所誤解的,因為大家常常會直接透過字面的意思,就認為xxx是不是有躁鬱症。像是我們常常聽到,「我最近心情好差喔,我是不是有躁鬱症?」、「他最近脾氣有點暴躁耶,是不是躁鬱症發作阿?」甚至八點檔也常常用躁鬱症這個詞,到底躁鬱症是什麼呢?
2016年4月18日
[軟體分享] 簡單X快速X免費 影片音量放大軟體 - Video Volumn Booster
圖片來源:Letasoft |
最近錄了一些影片,可是因為手機收音的效果比較不好,使得影片的音量都太小,在網路上找了找,有些軟體只能讓我轉1分鐘以內否則就要收費(Audio Amplifier Pro);有些軟體轉完後音量雖然變大了,可是畫質也變差了(Xmedia recode);windows movie maker雖然也可以用來放大音量,可是放大的效果不夠。最後終於找到了這款免費簡單又好用,而且速度又快,專門用來調整影片音量的軟體─Video Volume Booster。
2016年4月10日
2016年4月7日
如何在php中將陣列(array)轉成JSON格式---json_encode中文utf8
圖片來源:Jonathan Weatherhead |
在php中我們常常會用陣列來處理資料,但在網頁資料傳遞的過程中,我們常常需要將資料從一端傳到另一端(例如,從伺服器端傳到客戶端),這時候我們就需要一些共通的格式來方便包裝資料和解讀資料,而JSON格式就是現在相當常用的一種(如果還不清楚什麼是JSON格式,可以參考這篇:[筆記] JavaScript中物件(object)和JSON格式的轉換)。
那麼,我們就來說明一下,要怎麼在php中將資料從陣列轉換成JSON格式吧!
當陣列索引值和元素都是英文的情況---json_encode
我們先建立一個陣列如下:
在資料都是英文的情況下,要將陣列轉成JSON格式非常的容易,只要使用php內建的函式json_encode就可達到,像是這樣:
這時候你就可以看到我們原本陣列的資料已經被轉換成JSON格式了:
程式範例
<? $data_array_en = [ "1" => "Apple", "2" => "HTC", "3" => "Samsung", "4" => "ASUS", "5" => "Sony" ]; $data_json_en = json_encode($data_array_en); echo $data_json_en; ?>
當陣列當中包含中文的情況
看起來要把陣列轉成JSON似乎非常的容易,然而,當我們的資料包含中文,就會碰到一些問題...。
我們同樣的先建立一個陣列:
然後一樣直接透過json_encode來轉換資料:
這時候,會發現轉出來竟然變成一堆亂碼...
這時候我們可以怎麼做呢?
解法
這時候不必慌張,解法是這樣子的,如果中文會讓json_encode出現亂碼,那就先將資料透過urlencode讓字串當中不會有中文出現,再轉成JSON格式,最後再用urldecode把資料轉回成中文格式。
程序如下:
如果不清楚foreach的使用,可參考[筆記] PHP & MySQL 透過foreach來呼叫出陣列的值。
這時候,即使我們的資料裡面有包含中文字,一樣可以順利轉換成JSON:
程式範例
$data_array = [ "北部" => "臺北", "北部" => "桃園", "中部" => "台中", "南部" => "台南", "南部" => "高雄", "東部" => "花蓮", ]; // 先利用urlencode讓陣列中沒有中文 foreach($data_array as $key => $value){ $new_data_array[urlencode($key)] = urlencode($value); } // 利用json_encode將資料轉成JSON格式 $data_json_url = json_encode($new_data_array); // 利用urldecode將資料轉回中文 $data_json = urldecode($data_json_url); echo $data_json;
包裝成function來使用吧!
如果很常會使用到把陣列轉成JSON的話,我們就把它包成一個Function來使用吧!只需要把function拷貝到程式當中,在參數的地方帶入欲轉換的成JSON的陣列就可以了!
程式碼
$data_array = [ "北部" => "臺北", "北部" => "桃園", "中部" => "台中", "南部" => "台南", "南部" => "高雄", "東部" => "花蓮", ]; function array_to_json($sel_array){ foreach($sel_array as $key => $value){ if(is_string($key) || is_string($value)) { $new_array[urlencode($key)] = urlencode($value); } } return urldecode(json_encode($new_array)); } echo array_to_json($data_array);
延伸閱讀
[筆記] JavaScript中物件(object)和JSON格式的轉換[筆記] PHP & MySQL 透過foreach來呼叫出陣列的值