PHP 使用多维数组,效率会不会很低呢?
PHP中文网
PHP中文网 2017-06-15 09:22:11
0
7
855

在使用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中文网

认证高级PHP讲师

全部回复(7)
为情所困
  1. PHP中只有数组,你没得选择,laravel是基于PHP的框架,所以他的语法不可能脱离PHP;

  2. 效率这种东西得看你怎么用,多层for循环操作当然效率会低,但是如果多通过索引的话效率还行

学霸

不存在效率低这种问题的。。PHP 的数组实现本来就是个双向链表。。

淡淡烟草味

这个没有效率问题 数据库查询上的效率比较重要

洪涛

执行效率不在于php的运行速度,IO才是瓶颈。这点东西大php处理ms级的

洪涛

Laravel:这锅我不背!

绝大多数PHP框架和程序的配置文件都是这样的,如果效率真的下降,作为PHP领跑者的Laravel框架肯定会使用更好的方式来处理。

另外PHP7比PHP5在数组操作方面效率高了很多。

学霸

使用JSON保存配置的项目是不是很多.
PHP中的关联数组就等价于JS中的JSON对象.
所以可以把PHP的关联数组跟Node.JS的JSON对象进行性能对比.
生成一个包含100万个元素的关联数组(映射/字典):
PHP7的耗时仅为Node7的1/3,就连PHP5都比Node7要快.

可见PHP关联数组的性能是相当好的.

我想大声告诉你

首先, 提及一点, 脱离了使用场景谈效率都是扯淡, 需要开发效率就用 php, 需要运行效率就去用 c/c++.

回答问题: 网站访问量不大的情况下非常可行.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板