This is a collection of questions that come up every now and then about syntax in PHP. This is also a Community Wiki, so everyone is invited to participate in maintaining this list.
It used to be hard to find questions about operators and other syntax tokens.¹
The main idea is to have links to existing questions on Stack Overflow, so it's easier for us to reference them, not to copy over content from …
我对PHP函数的默认值感到困惑.说我有这样的功能:
function foo($blah, $x = "some value", $y = "some other value") {
// code here!
}
Run Code Online (Sandbox Code Playgroud)
如果我想使用$ x的默认参数并为$ y设置不同的参数,该怎么办?
我一直在尝试不同的方式,我只是变得更加困惑.例如,我尝试了这两个:
foo("blah", null, "test");
foo("blah", "", "test");
Run Code Online (Sandbox Code Playgroud)
但是这两个都不会导致$ x的正确默认参数.我也尝试用变量名设置它.
foo("blah", $x, $y = "test");
Run Code Online (Sandbox Code Playgroud)
我完全期望这样的事情能发挥作用.但它根本无法实现.似乎无论我做什么,每次调用函数时,我都必须最终输入默认参数.而且我必须遗漏一些明显的东西.
我似乎记得在PHP中有一种方法可以将数组作为函数的参数列表传递,将数组解引用为标准func($arg1, $arg2)方式.但是现在我迷失了怎么做.我记得通过引用传递的方式,如何"传递"传入的参数...但不是如何将数组取消列表到参数列表.
它可能很简单func(&$myArgs),但我很确定不是这样.但是,遗憾的是,到目前为止,php.net手册尚未透露任何内容.并非我在过去一年左右不得不使用这一特定功能.
我编写了一个可以接受10个参数的PHP函数,但只需要2个.有时,我想定义第八个参数,但我不想为每个参数输入空字符串,直到我达到第八个.
我的一个想法是传递带有参数数组的抽象函数,这些参数将它传递给实际函数.
有没有更好的方法来设置功能,所以我只能传入我想要的参数?
PHP中的三点(...)是什么意思?
当我在我的Sever中安装Magento 2时出现错误.调查代码,发现有一个三点(...),产生错误.我提到了下面的代码
return new $type(...array_values($args));
Run Code Online (Sandbox Code Playgroud) 我如何设置的Cookie在我PHP apps的HttpOnly cookies?
好的,我完全忘记了如何在PHP中跳过参数.
让我们说:
function getData($name, $limit = '50', $page = '1') {
...
}
Run Code Online (Sandbox Code Playgroud)
我如何调用此函数以使middle参数采用默认值(即'50')?
getData('some name', '', '23');
Run Code Online (Sandbox Code Playgroud)
以上是否正确?我似乎无法让这个工作.
我们大多数人都知道以下语法:
function funcName($param='value'){
echo $param;
}
funcName();
Result: "value"
Run Code Online (Sandbox Code Playgroud)
我们想知道如何为'not last'参数传递默认值?我知道这个术语很遥远,但一个简单的例子是:
function funcName($param1='value1',$param2='value2'){
echo $param1."\n";
echo $param2."\n";
}
Run Code Online (Sandbox Code Playgroud)
我们如何完成以下任务:
funcName(---default value of param1---,'non default');
Result:
value1
not default
Run Code Online (Sandbox Code Playgroud)
希望这是有道理的,我们希望基本上假设不是最后的参数的默认值.
谢谢.
假设我有一个PHP函数foo:
function foo($firstName = 'john', $lastName = 'doe') {
echo $firstName . " " . $lastName;
}
// foo(); --> john doe
Run Code Online (Sandbox Code Playgroud)
有没有办法只指定第二个可选参数?
例:
foo($lastName='smith'); // output: john smith
Run Code Online (Sandbox Code Playgroud) 在PHP中,如果我有一个这样的函数
function example($argument1, $argument2="", $argument3="")
Run Code Online (Sandbox Code Playgroud)
我可以在其他地方调用此函数
example($argument1)
Run Code Online (Sandbox Code Playgroud)
但是,如果我想给thrid参数赋予一些价值,我应该这样做
example($argument1, "", "test");
Run Code Online (Sandbox Code Playgroud)
要么
example($argument1, NULL, "test");
Run Code Online (Sandbox Code Playgroud)
我认为两者都会奏效,但更好的方法是什么?因为将来如果在main函数中更改$ argument2的值并且如果我有"",那么会有任何问题吗?或NULL是最好的选择?
谢谢