2010-01-21 31 views
4

我有几个函数,应该返回一个数组,使它与另一个数组合并。PHP:合并完整数组与空数组或首先检查isset()?

但是,有时没有什么可以返回的。 这里最好的场景是什么?

  1. 返回一个空数组和合并与完整的一个或
  2. 返回null,存储在一个变量回归,检查变量,然后根据需要合并。

我这样问,因为有时候最短路径不是最快的,我真的不知道array_merge()在底层做了什么。

+0

是否有*任何情况下的功能将不/不能返回一个数组? (并且你是否使用异常处理?) – 2010-01-21 21:52:43

+0

是的:该函数查询某个特定id的属性,有时不存在(就像一个人的中间名,就像一个例子)我没有使用异常处理因为它不会返回错误,只是一个警告。 – skerit 2010-01-21 22:08:11

回答

4

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

  1. 返回一个空数组和合并与完整的一个或
  2. 返回null,存储在一个变量回归,检查变量,如果需要,然后合并它。

当你编写一个函数时,除了你以外的其他人将要使用它(这包括你从6个月前的谁不知道你在做什么当前)。如果你返回null,那么使用你的函数的人需要知道它可能不会返回一个数组,所以无论何时他们使用你的函数,都需要将它们的变量包装在很多is_arrayis_set检查中。这会导致难以维护代码,或者在应用程序/系统在数组返回时工作时出现问题,而在返回空时不会出现问题。如果你的函数总是返回一个数组,人们可以安全地将它传递给期望数组的函数。 (这就是为什么强类型的执法恨PHP的一些主张。在Java等语言,这并不开心,因为返回一个特定类型的事情功能)

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

使用更清洁的API,基准,然后优化特定情况下,你开始看到性能问题。

+1

这是一个有效的观点,我的未来我感谢你! – skerit 2010-01-21 22:11:23

1

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

1

我会去...

  1. 返回一个空数组,如果没事就去 错

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

......虽然这意味着您必须做一些额外的工作,但这可能是更好的做法,并且长期来看也会带来好处。 。 (使用返回值的array_merging可能看起来很整洁,但有点不确定,除非不可能发生任何错误。)