在PHP中将变量传递为数组还是作为每个变量的独立变量会更好吗?我的意思是,在30个关联数组中,我可能使用5个变量的情况下,将它们分别作为五个变量传递给它们,还是传递整个数组呢?将数组或变量传递给函数 - PHP?
回答
通常来说,在选择如何定义函数时需要考虑一些事情。这可能不是直接回答你的问题,但它可能提供了一个选择一种方式而不是另一种的理由,以及为什么他们可能会更好的不同的事情。
function do_something($a, $b, $c, $d, $e) {
...
}
function do_something(array $a) {
...
}
首先,还有语义。你的函数是依赖于那个特定的数组,还是只是在那种情况下你要传递的参数恰好在数组中?
如果它是依赖于阵列上,那么它会站在道理传递,在作为唯一的参数,并且代码保持可读,因为你不会在任何其他情况下使用它:
function do_something_to_big_array($big_array) {
....
}
如果不是特定的,您可能会遇到问题。
该函数变得模糊: 如果不读取该函数以找出该数组必须包含的元素,则不能使用它。
的功能变得更加复杂: 您可以定义使用默认值提供一个默认的阵列,但是当你提供参数,将不会被使用 。你会发现自己试图重新实现一个标准的参数列表,检查是否存在键,设定他们,如果他们不这样做,等
// default array if no argument supplied
function do_something($a = array('a' => true, 'b' => 10, 'c' => false)) {
// you don't know if you're working with the default or not
if (!isset($a['c'])) $a['c'] = false;
...
}
// define a defaults array and replace duplicates with $a's values
function do_something(array $a) {
$defaults = array('a' => true, 'b' => 10, 'c' => false);
$a = array_replace($defaults, $a);
}
// have defaults without extra logic in the function
function do_something($a = true, $b = 10, $c = false) {
...
}
想象一下,有这样做,对于每一个你声明的功能,让你可以传入数组并使其可靠地工作,而不是单独的参数。
可读性受损;更多的混乱: 你有所有你需要传递给函数的数据,但是你必须创建一个包含这些数据的关联数组,然后才能使用它。
$data = array('a' => $a, 'b' => $b, 'c' => $c);
do_something($data);
当然,总有一个例外,你可能会发现自己有一个大的参数列表:
function do_something($a, $b, $c, ... $x, $y, $z) {
...
}
这是不合理的,需要重构,这样你就可以在阵列中通过,与工作,因为你永远不会在任何其他情况下使用它:
function do_something_with_alphabet(array $alphabet) {
...
}
或者,也许你可以把它分割成更多的功能,如果它是合理的,这样做的:
function do_something_first($a, $b, $c) {
...
}
function do_something_last($x, $y, $z) {
...
}
没有意义,说你有去做这样,还是那个样子,甚至是其他的方式,但它是值得保持它在心中,因为你可以在一个情况下编写一个函数,然后你(或其他人)可能会在很多月后重新访问它,并且很难弄清楚发生了什么。如果将单个数组传递给函数是绝对有意义的,那就是了。如果没有,并且为了方便起见,那么再想一想。
很好的回答!非常感谢兄弟! – cgwebprojects 2012-04-07 16:37:18
- 1. 将PHP变量传递给Javascript函数
- 2. 将php变量传递给jQuery函数
- 3. 将php变量传递给Javascript函数
- 4. 将php变量传递给javascript函数
- 5. 将PHP数组传递给js变量
- 6. 如何将数组和变量传递给PHP中的函数?
- 7. 如何将常量数组或变量数组传递给C中的函数?
- 8. 将数组传递给函数php
- 9. 将POST数组传递给php函数
- 10. 将变量传递给函数失败
- 11. 将变量传递给.html()函数
- 12. 将$ _GET变量传递给javascript函数
- 13. 将任意数量的一组变量传递给Python函数
- 14. printf函数将变量传递给javascript
- 15. 将变量传递给引用函数?
- 16. 将jQuery变量传递给Javascript函数
- 17. 需要将变量传递给函数
- 18. 将变量传递给函数
- 19. 将变量传递给jQuery .load函数
- 20. 将变量传递给回调函数
- 21. 将Ajax变量传递给Codeigniter函数
- 22. Node.js将变量传递给父函数
- 23. jquery将此传递给变量函数
- 24. 将变量传递给函数范围
- 25. 将变量传递给结构函数
- 26. 将xsl变量传递给javascript函数
- 27. 将R向量传递给PHP数组
- 28. 如何将php变量作为参数传递给JavaScript函数
- 29. 将数组传递给scanf函数和变量
- 30. 将PHP变量传递给Ajax函数将变量JS转换为PHP
没有一个例子就很难说。你能否在你的问题中提供这样一个例子? – 2012-04-07 11:51:35