PHP:合并完整数组与空数组或首先检查isset()?

时间:2010-01-21 21:44:19

标签: php arrays function merge performance

我有一些应该返回一个数组的函数,让它与另一个数组合并。

然而,有时候没有什么可以回归的。 这里最好的方案是什么?

  1. 返回一个空数组并将其与完整的数组合并
  2. 返回null,将返回值存储在变量中,检查该变量,然后根据需要将其合并。
  3. 我问这个是因为有时最短的路线并不是最快的,而且我真的不知道array_merge()在幕后做了什么。

3 个答案:

答案 0 :(得分:4)

返回空数组。比较两个选项的复杂性

  1. 返回一个空数组并将其与完整的数组合并
  2. 返回null,将返回值存储在变量中,检查该变量,然后根据需要将其合并。
  3. 当你编写一个函数时,除了你以外的人将会使用它(这包括你从6个月前开始不知道你当前在做什么)。如果你返回null,那么使用你的函数的人需要知道它可能不会返回一个数组,所以只要他们使用你的函数,就需要将他们的变量包装在很多is_arrayis_set个检查中。这导致更难以维护代码,或者在返回数组时应用程序/系统工作时的错误,但是返回null时则不然。如果你的函数总是返回一个数组,人们可以安全地将它传递给期望数组的函数。 (这就是为什么一些强类型执行的拥护者讨厌PHP。在像Java这样的语言中,这并不高兴,因为函数返回特定类型的东西)

    你对性能的关注是值得称赞的,但总的来说,内置的数组操作函数已经很好地调整,并且只会在一小部分时间内成为瓶颈。在日常代码运行中,检查变量值和合并零元素数组的性能优势可以忽略不计。

    使用更干净的API,基准测试,然后优化您开始发现性能问题的特定情况。

答案 1 :(得分:1)

如果没有要返回的内容,只返回一个空数组。这听起来最符合逻辑。

答案 2 :(得分:1)

我会去...

  1. 如果没有任何内容,则返回一个空数组 错

  2. 返回false(或抛出异常) 如果发生错误

  3. ......虽然这意味着你必须做一些额外的工作,但这可能是更好的做法,并且从长远来看会带来红利。 (带有返回值的array_merging可能看起来很整洁,但除非发生任何错误,否则它有点可疑。)