【问题标题】:PHP multidimensional array vs. flat array efficiencyPHP 多维数组 vs. 平面数组效率
【发布时间】:2014-02-03 21:24:24
【问题描述】:

我的数据库中有一些数据在本质上有点像网格。一个项目位于“行”和“列”中。

我正在编写一些 PHP 代码来查询数据库中的数据,将其放入一个内部数组中,对其进行一些处理,然后输出一个显示它的 HTML 表。

我的问题是,内部数组应该是多维的,像这样吗?

$mydata[$row][$column]

还是应该是平的,像这样?

$mydata[$row . "_" . $column]

代码可能会频繁运行(这是多个用户可能会查看的实时刷新),所以我想要最有效的代码。我的直觉反应是,平面数组在字符串连接中会更慢,而多维数组在嵌套查找中会更慢。

我考虑过暂时不存储数据,直接从数据本身输出表格。不幸的是,后处理的性质意味着我不能这样做(某些显示属性需要根据后面的行和列进行更改)。

【问题讨论】:

  • 为什么要在查询后进行查找?我假设您的所有要求都已满足,..
  • 您过度分析了您的代码。一个系统与一个系统在效率上的任何微观差异另一个将被脚本中发生的所有其他事情大大黯然失色。除非您正在运行 Facebook 规模的操作,否则不要费心去做。
  • @Wrikken :有些东西像“在每一行中找到具有最高值的项目,并用蓝色突出显示它,除非同一列中已经有另一个蓝色突出显示”这样的东西不容易做到使用简单的查询语句。
  • 它可以,但在数组中可能同样简单。可能,您如何处理数组不会成为您的瓶颈,Marc B 有一点。

标签: php arrays multidimensional-array


【解决方案1】:

通常,在您通过基准测试证明它很重要之前,这并不重要,但在这种情况下,第一种方法显然是正确的选择。这就是数组的用途。使用整数索引,数组访问速度最快。构建联合字符串键是一个坏主意,但同样,通过一些简单的基准测试向自己证明这一点非常容易。

【讨论】:

    【解决方案2】:

    为什么不直接使用这个:

    ${"mydata" . "_" . $row . "_" . $column}
    

    我在开玩笑。这就是为什么多维,你的第一个示例数组会更好的原因。您的第二个示例介于两者之间。

    对于搜索、排序和其他基本操作,我推荐$mydata[$row][$column]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      相关资源
      最近更新 更多