0

我试图在允许我的一个函数接受一个数组数组还是只接受一个标准数组之间下定决心。

带有数组的数组将允许我验证每个数组键,但如果我能够看到使用标准数组的改进性能,则没有必要。

两者之间是否有任何性能差异(性能方面)?

例如

数组数组

$arr2 = array(
   array('isbn' => '1846031249'),
   array('isbn' => '0340912081'),
   array('isbn' => '0435446576'),
   array('isbn' => '1741845467'),
   array('isbn' => '0750924721'),
   array('isbn' => '1843286432'),
   array('isbn' => '011331079X'),
   array('isbn' => '9063325819')
);

普通数组

$arr2 = array(
   '1846031249',
   '0340912081',
   '0435446576',
   '1741845467',
   '0750924721',
   '1843286432',
   '011331079X',
   '9063325819'
);
4

4 回答 4

2

不要做数组数组!您不必要地增加了需要存储在内存/进程中的信息量。在您的情况下,当每个值都只是一个 ISBN 时,请跟踪数组,以便您记住其中的内容并废弃重复的标签。

于 2012-08-03T21:38:54.457 回答
2

在你需要之前不要增加复杂性,而不是之前。当事情发生变化时,返回并编辑您的函数以使用新的输入格式并没有错。(我假设这不是公共 API 或其他东西。)

再加上数组的数组使得排序变得非常困难,但更糟糕的是,如果不迭代整个数组就不可能检查数组值的存在。

常规数组有很多函数可以实现这一点。

于 2012-08-03T21:42:36.283 回答
2

将您拥有的每个 ISBN 代码存储为只有一个键的关联数组是没有用的。想一想,哪个需要更长的时间?:

  1. 我们正在搜索 ISBN = xxxxxxxxx。打开 $array[0]->打开 $innerarray[0] -> 未找到 -> 关闭 $innerarray -> 打开 $array[1] -> 打开 $innerarray[0] -> 未找到等...
  2. 我们正在搜索 ISBN = xxxxxxxxx。打开 $array[0]-> 未找到 -> 打开 $array[1] -> 未找到 -> 打开 $array[2] 等...

当您在其中存储 10.000 个值时,第二种方法要快得多。打开 10.000 个数组来搜索 $innerarray[0] 上的值比只打开一个数组需要更多的操作。

于 2012-08-03T21:47:06.977 回答
1

是的,第一个选项需要更长的时间来初始化并且需要更多的内存。

但是除非他/她循环处理它们数千次或创建非常大的数组,否则不会注意到差异。

于 2012-08-03T21:37:38.013 回答