搜尋

首頁  >  問答  >  主體

PHP 使用多維數組,效率會不會很低呢?

使用PHP做專案時,需要用到儲存資料的資料結構,但在PHP 中,目前好像只能用陣列來儲存。

PHP的Laravel等框架的設定檔都是使用的多維數組,如:

// app/config/database.php 文件
return array(
    /*
    |--------------------------------------------------------------------------
    | PDO 类型
    |--------------------------------------------------------------------------
    | 默认情况下 Laravel 的数据库是用 PDO 来操作的,这样能极大化的提高数据库兼容性。
    | 那么默认查询返回的类型是一个对象,也就是如下的默认设置。
    | 如果你需要返回的是一个数组,你可以设置成 'PDO::FETCH_ASSOC'
    */
    'fetch' => PDO::FETCH_CLASS,

    /*
    |--------------------------------------------------------------------------
    | 默认的数据库连接名
    |--------------------------------------------------------------------------
    | 这里所说的名字是和下面的 'connections' 中的名称对应的,而不是指你用的什么数据库
    | 为了你更好的理解,我在这里换了一个名字
    */
    'default' => 'meinv',

    /*
    |--------------------------------------------------------------------------
    | 数据库连接名
    |--------------------------------------------------------------------------
    | 这里就是设置各种数据库的配置的,每个数组里的 'driver' 表明了你要用的数据库类型
    | 同一种数据库类型可以设置多种配置,名字区分开就行,就像下面的 'mysql' 和 'meinv'
    | 其他的么,我觉得不需要解释了吧,就是字面意思,我相信你英文的能力(其实是我英文不好)
    */
    'connections' => array(

        'sqlite' => array(
            'driver'   => 'sqlite',
            'database' => __DIR__.'/../database/production.sqlite',
            'prefix'   => '',
        ),

        'mysql' => array(
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'database',
            'username'  => 'root',
            'password'  => '',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

        'meinv' => array( //这里就是上面例子里的默认连接数据库名,实际上是 mysql 数据库
            'driver'    => 'mysql',
            'host'      => 'localhost',
            'database'  => 'database',
            'username'  => 'root',
            'password'  => '',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

        'pgsql' => array(
            'driver'   => 'pgsql',
            'host'     => 'localhost',
            'database' => 'database',
            'username' => 'root',
            'password' => '',
            'charset'  => 'utf8',
            'prefix'   => '',
            'schema'   => 'public',
        ),

        'sqlsrv' => array(
            'driver'   => 'sqlsrv',
            'host'     => 'localhost',
            'database' => 'database',
            'username' => 'root',
            'password' => '',
            'prefix'   => '',
        ),

    ),
);

我覺得多維數組的效率會很低,但是Laravel框架都是這樣用的,所以我不清楚在 PHP 中使用多維數組到底可行不可行,希望大家解答! ! !謝謝了! ! !

PHP中文网PHP中文网2756 天前898

全部回覆(7)我來回復

  • 为情所困

    为情所困2017-06-15 09:24:11

    1. PHP中只有數組,你沒得選擇,laravel是基於PHP的框架,所以他的語法不可能脫離PHP;

    2. 效率這種東西得看你怎麼用,多層for循環操作當然效率會低,但是如果多通過索引的話效率還行

    回覆
    0
  • 欧阳克

    欧阳克2017-06-15 09:24:11

    不存在效率低這種問題的。 。 PHP 的陣列實作本來就是雙向鍊錶。 。

    回覆
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-15 09:24:11

    這個沒有效率問題 資料庫查詢上的效率比較重要

    回覆
    0
  • PHP中文网

    PHP中文网2017-06-15 09:24:11

    執行效率不在於php的運作速度,IO才是瓶頸。這點東西大php處理ms級的

    回覆
    0
  • PHP中文网

    PHP中文网2017-06-15 09:24:11

    Laravel:這鍋我不背!

    絕大多數PHP框架和程序的配置都是這樣的,如果效率真的下降,作為PHP領跑者的Laravel框架肯定會使用更好的方式來處理。

    另外PHP7比PHP5在陣列操作方面效率高了許多。

    回覆
    0
  • 欧阳克

    欧阳克2017-06-15 09:24:11

    使用JSON保存配置的項目是不是很多.
    PHP中的關聯數組就等價於JS中的JSON對象.
    所以可以把PHP的關聯數組跟Node.JS的JSON對象進行性能對比.
    生成一個包含100萬個元素的關聯數組(映射/字典):
    PHP7的耗時僅為Node7的1/3,就連PHP5都比Node7要快.

    可見PHP關聯數組的性能是相當好的.

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-06-15 09:24:11

    首先, 提及一點, 脫離了使用場景談效率都是扯淡, 需要開發效率就用 php, 需要運行效率就去用 c/c++.

    回答問題: 網站訪問量不大的情況下非常可行.

    回覆
    0
  • 取消回覆