2016-07-24 64 views
1

我有一個二維數組有幾個子數組(約30個,子數組有10個元素)。 我需要從數組中獲得相當頻繁的基本數據,我有一個函數可以在我的腳本中返回它的內容(或部分內容)。該函數的樣子:PHP包括數組與MySQL查詢:好主意?

function get_my_data($index = false){ 
$sub0 = array(
    'something' => 'something', 
    'something else' => 'else', 
    ... 
    ); 
$sub1 = array(
    'something' => 'something different', 
    'something else' => 'else different', 
    ... 
    ); 
... 
$sub30 = array(
    'something' => 'something 30 times different', 
    'something else' => 'else 30 times different', 
    ... 
    ); 
$data = array($sub0,$sub1,$sub2,...,$sub30); 
if($index !== false) 
return $data[$index]; 
else 
return $data; 
?> 

然後我把它用,包括:

<?php 
include 'my_data.php'; 
$id = $_GET['id']; 
$mydata = get_my_data($id); 
... 
?> 

我做這個,因爲當我開始這個項目時,我沒有想到我將有更多的那10個子陣列,而我也不需要它具有動態性。實際上,現在我必須添加一個動態列(對子數組的索引),在這種情況下使用數組聲明並不是一個好主意。我立即想到使用數據庫,傳輸數據並不困難,但如果我這樣做,那麼我需要改變我的功能get_my_data並在其中插入一個查詢,因此,因爲它被稱爲很多次,我會有很多的查詢,幾乎每個我的網站腳本都有它的一個。我認爲性能會更差(因爲mysql已經在我的網站中大量使用)。動態數據不會太頻繁地改變(客戶端這樣做)。

我必須解決這個問題的思路是:

  • 保存所有的數據在數據庫,並通過MySQL的查詢得到它,
  • 休假PHP端,並使用文件管理動態數據,
  • 在PHP端留下靜態部分,在mysql數據庫中添加一個邏輯連接器(如'id'索引在子數組中)和id列,並獲得mysql上的動態數據

我不想失去很多perfo愛情,你有沒有任何建議或建議?

回答

0

把這樣的數據放在代碼中是最糟糕的計劃。你不僅創建了一大堆垃圾,而且幾乎全部扔掉了垃圾,但是如果這些垃圾發生變化,這是一場噩夢。編輯源代碼,將其檢入到版本控制中,並對其進行部署是很多工作,以便對某些數據進行簡單更改。

至少在數據格式(如JSON,YAML或XML)中存儲此內容,以便您可以按需閱讀並根據需要更改純數據文件。

理想情況下,您可以將其放入數據庫並在必要時進行查詢。數據庫旨在存儲,更新和保存這樣的數據。

你也可以在數據庫中存儲JSON,MySQL 5.7甚至有一個本機列類型,這使得這種事情更容易。