9
|
Darryl Hein IrishChieftain · 技术社区 · 14 年前 |
1
7
真正的问题是为什么要在不需要数组的时候创建数组。 如果使用$arg=array(),则会有一条特定的指令来创建数组,即使是PHP指令,该指令仍会占用CPU周期。如果只执行$arg=NULL,则不会执行任何操作。 |
2
4
|
3
2
|
4
1
原因可能是要区分要处理的对象的空集合,以及在不放入任何对象时略有不同的功能。 作为一个假设的例子,假设您有一个为用户创建报告的函数。输入数组包含要为其生成报告的用户的id(甚至对象)。当您需要处理所有用户时,也可以使用相同的函数来处理报告,而不是处理一组特定的用户。当您只想为特定的用户进行处理时,您将抛出数组。但是,如果您想处理所有这些参数,那么参数应该是一个明显的NULL,而不是一个“no users”(空数组)。 例如,假设有一个页面,管理员可以在其中指定要为哪些用户创建报告。但是管理员在没有选择任何用户的情况下按下“Create Reports”按钮,在这种情况下,一个空数组将被抛出到函数中,函数将准确地处理no users,因为数组中没有用户。 那么在这个假设的系统中,您可能在其他地方有一个不同的按钮,“createallreports”,在这种情况下,您不会抛出任何内容,函数将能够区分“number of users=0”和“usersnotprovided”,在这种情况下,这意味着“All users”。 这就是一个例子。通常,我使用NULL作为默认参数,以便能够在函数中区分是否传递了某些内容,因为在没有指定任何特定内容时,函数的行为可能会有所不同,如上面给出的示例所示。 |
5
1
我知道这是几年前的事了,但我忍不住要说选择了错误的答案,没有人清楚地回答完整的问题。所以对于其他正在研究这个问题并想知道这里到底发生了什么的人来说:
当调用foo()时,首先会发生的事情是PHP将测试$arg以查看它是否是一个数组。没错,数组$arg是一个测试。如果$arg不是数组,您将看到以下错误: 如果$arg是字符串:
好的,那么NULL意味着如果没有传递$arg,我们将把它设置为NULL。这只是一种使$arg可选或预设其值的方法。 要清楚的是,如果不使用RFC补丁,就没有类型转换函数参数, here . 如果使用RFC修补程序,可以执行以下操作:
|
6
0
那你就得用
|
Jacco · 未能格式化我的日期以在php中正确工作 1 年前 |
jay ram · 如何在URL核心php中从API获取JSON? 1 年前 |
Ishwarya A · php电子表格在浏览器中显示多张excel 1 年前 |