如何通过将所有其他必需/可选参数(如果有)保持为其默认值,仅将可选参数传递给PHP函数?

如何通过将所有其他必需/可选参数(如果有)保持为其默认值,仅将可选参数传递给PHP函数?,php,function,parameter-passing,Php,Function,Parameter Passing,我在运行Windows 10 Home单语言64位操作系统的笔记本电脑上使用的是PHP 7.3.2 我已经在我的笔记本电脑上安装了最新版本的XAMPP安装程序,它安装了Apache/2.4.38(Win32)和php7.3.2 请考虑下面的原型PHP函数的原型定义 HTMLTraceCARS()/: 现在,我只想使用布尔值设置最后一个可选参数,即$double\u encode,并将所有其他可选参数设置为默认值 为了实现这一点,我尝试了以下代码: <?php echo htmlspec

我在运行Windows 10 Home单语言64位操作系统的笔记本电脑上使用的是PHP 7.3.2

我已经在我的笔记本电脑上安装了最新版本的XAMPP安装程序,它安装了Apache/2.4.38(Win32)php7.3.2

请考虑下面的原型PHP函数的原型定义<代码> HTMLTraceCARS()/<代码>:

现在,我只想使用布尔值设置最后一个可选参数,即
$double\u encode
,并将所有其他可选参数设置为默认值

为了实现这一点,我尝试了以下代码:

<?php
  echo htmlspecialchars('&amp', '', '', FALSE);
?>
我不明白我错在哪里。我将其他参数设置为默认值,方法是用逗号分隔空格,并仅将可选参数
$double_encode
分配给布尔值
FALSE

那为什么我不能得到输出和一些警告呢?为什么?我在代码中犯了什么错误?

传递
'
并不意味着返回默认参数值。它的意思是——试图传递一个空字符串

如果要实现这一点,您需要复制默认值:

htmlspecialchars('amp',ENT|u COMPAT | ENT|u HTML401,ini_get('default_charset'),FALSE);

如果是这种情况,那么为什么在将可选参数
double\u encode
设置为
FALSE
TRUE
时会得到相同的输出。值
TRUE
和值
FALSE
的结果必须不同。为什么没有发生呢?在这两种情况下,我得到的输出与
相同&;amp
对于您的特定示例,此参数不相关。如果使用
,您可能会发现差异(您的字符串未命中
)。是的,您是正确的。我错过了结尾的分号。谢谢你的帮助,兄弟。每当我想传递一个自定义可选参数或多个自定义参数时,我是否需要复制所有剩余的默认值?如果是,请让我知道这仅适用于内置PHP函数,还是同时适用于用户定义和内置PHP函数?谢谢。您必须在自定义参数之前复制任何内容,之后的任何内容都将以本机方式返回默认值。对于用户定义的函数,行为取决于实现,但通常也必须填写前面的默认值。
<?php
  echo htmlspecialchars('&amp', '', '', FALSE);
?>
Warning: htmlspecialchars() expects parameter 2 to be int, string given in th67i.php on line 2