簡體   English   中英

在PHP中定義大量數據的最佳方法是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM