在資料庫的操作裡我們可以將要用來關聯的資料表透過轉換成關聯式陣列的方式,來減少資料表的 join 以及增加使用上的方便,這裡來說明一下該怎麼處理,以下操作使用 PHP PDO。
首先我們使用類似這樣的表格,我這邊命名為 news_category。
id | name |
1 | 全球 |
2 | 政治 |
3 | 娛樂 |
4 | 體育 |
5 | 藝文 |
6 | 地方 |
接著透過 MySQL 把所有的分類撈出來:
$sql="SELECT * FROM news_category"; $stmt = $db_host->prepare($sql); $stmt->execute(); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
如果把 $rows print_r 出來,會得到這樣的內容:
[0] => Array ( [id] => 1 [name] => 全球 )
[1] => Array ( [id] => 2 [name] => 政治 )
[2] => Array ( [id] => 3 [name] => 娛樂 )
[3] => Array ( [id] => 4 [name] => 體育 )
[4] => Array ( [id] => 5 [name] => 藝文 )
[5] => Array ( [id] => 6 [name] => 地方 )
接著我們可以把資料格式轉換成比較好用的關聯式陣列,透過 array_column 把 id 當 key,name 當成 value。
$news_cat=array_column($rows, 'name', 'id');
這樣轉出來的關聯式陣列就是我們要的了:
[1] => 全球 [2] => 政治 [3] => 娛樂 [4] => 體育 [5] => 藝文 [6] => 地方
要使用的話只要把 category_id 帶到 $news_cat 的 key 就好了,比如說:
echo $news_cat["1"];
得到的內容就會是"全球"了。