当前位置: 首页 > 面试题库 >

有没有办法在PHP中指定可选参数值?

苏乐童
2023-03-14
问题内容

假设我有一个PHP函数foo:

function foo($firstName = 'john', $lastName = 'doe') {
    echo $firstName . " " . $lastName;
}
// foo(); --> john doe

有什么办法只能指定第二个可选参数?

例:

foo($lastName='smith'); // output: john smith

问题答案:

PHP本身不支持命名参数作为函数。但是,有一些方法可以解决此问题:

  1. 使用数组作为该函数的唯一参数。然后,您可以从数组中提取值。这允许在数组中使用命名参数。
  2. 如果要根据上下文允许可选数量的参数,则可以使用func_num_args和func_get_args而不是在函数定义中指定有效参数。然后,根据参数数量,字符串长度等,您可以确定要执行的操作。
  3. 将空值传递给您不想指定的任何参数。并不是真的可以绕开它,但是它可以工作。
  4. 如果在对象上下文中工作,则可以使用魔术方法__call()处理这些类型的请求,以便可以根据传递的参数将其路由到私有方法。


 类似资料:
  • 我有一个枚举类来存储一些像这样的分类值。 每种类型都有pydantic模型。例如: 我有这样的字典: 我有一个FastAPI路由,用户需要输入字段类型名称作为字符串(从FastAPI文档中的下拉列表),并根据选择的类型提供类型属性。如果用户选择type=“images”,则会提供相应的pydantic模型“ImageModel”供用户填写,以此类推。 选择类型名称后,有没有办法产生对应的pydan

  • 我有一个非常简单的练习,我注册客户端名称(字符串),我使用数组来做到这一点,所以当我添加一个新的我将使用另一个辅助数组,然后增加原来的长度,或者我将使用System.array复制,有没有其他方法,逐渐增加数组长度,因为你需要添加元素到该数组,不涉及辅助数组?

  • 问题内容: 我有一个使用处理程序发布可运行实例的线程。它工作得很好,但是我很好奇我如何将参数传递给Runnable实例使用?也许我只是不了解此功能的工作原理。 为了避免出现“您为什么需要此问题”的问题,我有一个线程化的动画,必须调出UI线程来告诉它实际绘制的内容。 问题答案: 只需使用接受参数的构造函数实现的类就可以了, 您可以使用参数化构造函数创建Runnable类的实例。

  • 问题内容: 我在执行应用程序时遇到以下错误: java.sql.SQLException:未为参数1指定值 这是什么意思? 我在岛上的清单: 我在托管bean中获得的用户组列表: 我的JSF页面: 我的数据表能够显示数据库中的组列表。但是,当我在数据表中选择单个行时,应用程序需要一些时间才能与数据库建立连接以显示所选结果。 另外,奇怪的是,该应用程序能够比其他应用程序更快地显示某些选定的结果。与我

  • 我试图在Kotlin中使用公共接口函数(正如我在Java中学习的那样)。 为此我创建了我的方法 据我记忆所及,我应该能做 但这似乎是不可能的(尽管可以使用modifier1.apply{input}) 阅读更多关于它的信息,我发现: Kotlin:如何将一个函数作为参数传递给另一个? 所以我把我的方法签名改为: 在这里我可以做 我可以这样叫福 哪里 到目前为止,这似乎是可能的,但将函数引用设为nu

  • 我需要在较大的文档中查找可能是信用卡详细信息的数字,例如346490606109917。我想忽略其中包含信用卡风格细节的较大数字,例如96213464906061099171。 在常规正则表达式中(请原谅这个双关语),我可以使用