[英]What is the best way to define a large array of data in PHP?
我有一個PHP應用程序,需要大型的二維硬編碼數據陣列。 我目前只是在每個腳本執行開始時包含的腳本中定義了這個。
我想知道是否有人對如何做到這一點有更好的想法。
我的腳本看起來如下所示。 除了我有更多的行,每行有更多的字段。
function getData() {
return array(
1 => array('name'=>'a something', 'price'=>123, 'field1'=>1, 'field2'=>3, 'field3'=>2),
2 => array('name'=>'b something', 'price'=>123, 'field1'=>3, 'field2'=>3, 'field3'=>2),
3 => array('name'=>'c something', 'price'=>234, 'field1'=>2, 'field2'=>3, 'field3'=>2),
4 => array('name'=>'d something', 'price'=>345, 'field1'=>8, 'field2'=>3, 'field3'=>2),
5 => array('name'=>'e something', 'price'=>655, 'field1'=>12, 'field2'=>3, 'field3'=>2),
6 => array('name'=>'f something', 'price'=>124, 'field1'=>11, 'field2'=>3, 'field3'=>2),
);
}
每行都有相同的字段。 所以它非常像DB表結果集。 我想我可以將它放在數據庫表中,但我覺得這個腳本更易於編輯,我認為運行比查詢數據庫要快得多。
我目前的解決方案的問題是它很難閱讀,因為有太多的字段。 我想要的是一個易於閱讀和編輯的系統,但它也必須非常快。
數據庫表會更好嗎? 或者也許從電子表格中讀取CSV文件?
一般來說,以任何方便的方式編寫數據,可能是CSV或類似的東西。 創建一個可以將數據處理為您需要的格式的函數。 緩存已處理的數據,因此不需要每次都執行此操作。
function getData() {
$cache = 'data.dat';
if (file_exists($cache)) {
return unserialize(file_get_contents($cache));
}
$data = <<<DATA
a something, 123, 1, 3, 2
b something, 123, 3, 3, 2
...
DATA;
$data = array_map(function ($row) {
$row = array_map('trim', explode(',', $row));
return array_combine(array('name', 'price', 'field1', 'field2', 'field3'), $row);
}, explode("\n", $data));
file_put_contents($cache, serialize($data));
return $data;
}
在上面的例子中,我只是使用HEREDOC字符串來存儲數據。 您可能希望將其放入外部CSV文件或XML文件中,您可以從某個地方自動生成或滿足您的需要。
如果它非常大,將其存儲在數據庫中可能是一個更好的主意。 像SQLite那樣輕量級的東西會做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.