在用户定义的函数中可以传递多少个参数?
我对编程相对较新,在JavaScript中工作了很多,现在尝试学习PHP.标题基本上是这样说的.我可以在用户定义的函数中传递多少个参数? 我注意到标准功能倾向于接受不同的数字,所以我想知道我是否可以在函数调用中传递无限的参数,只要该函数对每个函数都可以做任何事情. 例如: 调用功能: Myfunction(1,4,3,2,6) 被调用的功能: function Myfunction(numOfApples, numOfBananas, numOfPears, numOfOranges, numOfRasberries){'do something with each of these values'} 我要求一般的理解,我不是要做任何特定的事情,所以水果清单只是传递代表不同事物的参数的一个示例. 解决方案 我不相信可以发送到函数的参数数量有限制.但是,我认为,一旦您克服了大约3或4,我倾向于将数组或对象发送到如此之类的物体: : $s
0 2023-06-03
编程技术问答社区
Yii2: 如何在控制台命令中使用命名参数?
如何编写控制台命令yii controller/action --param1=something --param2=anything并在操作中检索那些命名参数? 解决方案 我发现该文档确实说明了如何,而是将其称为"命名参数",而是称为选项: http://www.yiiframework.com/doc-2.0/guide-tutorial-console.html#create-create-command 文档并不完整.因此,这里有一个例子: 您将参数作为属性添加到控制器: class CustomerController extends Controller { public $param1; public $param2; ... 您将options方法添加到控制器: public function options($actionID) { return array_merge(parent::
0 2023-06-03
编程技术问答社区
如何在php类上使用准备好的语句(命名参数)?
我想知道如何在PDO类准备的准​​备语句中使用命名参数,因此对PDO的调用看起来像以下内容. $query = $bdd->prepare('SELECT * FROM table WHERE login = :login AND pww = :pww'); $query->execute(array('login' => $login, 'pww' => $pww)); ,我想将其集成到类上,无论参数数量如何. 目前,我有require_once 'constants.php'; class Mysql extends PDO { private $con; public function __construct() { try { $this->con = parent::__construct(DB_DSN, DB_USER, DB_PASS); if ($this->getAttribute(PDO::ATTR_DRIVER_NAME) == DB_TYPE) $
0 2023-06-01
编程技术问答社区
在prepare语句中使用?和:param的区别
假设我想选择Id = 30的记录.准备好的语句允许两种绑定参数: 问号 $id = 30; $q = $conn->prepare("SELECT * FROM pdo_db WHERE id > ?"); $q->execute(array($id)); // Here above ID will be passed 命名参数 $sth = $conn->prepare("SELECT `id`, `title` FROM `pdo_db` WHERE `id` > :id"); $sth->execute(array( ':id' => 30 )); 两者都可以正常工作并且给出准确的结果,但是我无法获得这两者之间的确切差异,也无法使用一个或另一个? 解决方案 问号参数称为位置参数. 用:定义的参数和名称称为命名参数. 规则是您无法在准备好的语句中混合两者. 位置参数以简单的方式工作 - 如果您有两个位置参数,则可以指定一个带
0 2023-05-30
编程技术问答社区
为什么MySQLi库本身不支持命名参数?
$stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (?)"); $stmt->bind_param("i", $id); ,但从来没有像: $stmt = $mysqli->prepare("INSERT INTO test(id) VALUES (:id_value)"); $stmt->bind_param("i", "id_value", $id); 在我看来,named parameter替代是在API级别实现的合理功能.我很惊讶MySQLI仅在库中实现unnamed parameters. 有正当理由吗?对我来说,这对我没有意义,看到PDO,DQL和ORM在查询中都采用了命名参数. 我希望MySQLI开发人员不是"我们懒惰&不想"的情况.我相信有充分的理由,我正在寻找这个原因,或者是一种寻找原因的方法.未在mySqli扩展库中实现命名参数的原因. 解决方案 MYSQLi由于两个主要原因
0 2023-05-30
编程技术问答社区
PHP7+中的命名参数解决方案
如何在php 7+? 中实现命名参数功能 理想的语法是: find($wildcard, relative = true, listIfEmpty = false) { ... } 但是没有这样的解决方案. 在答案中,我实施了支持: 的最短解决方案 重构 键入参数和函数结果的提示 可重复使用的参数集 typesafe params 参数的默认值 每个参数(无硬编码字符串) 获取 非常简单的设置器/getter,您只能更改每个参数的一个名称 有关更多信息和实施,请参见答案 解决方案 首先,在您的框架或全球范围内进行一次: // the superclass that every params class will extend this class params { protected function setter($key, $value) { if ($value === null) { return
0 2023-05-27
编程技术问答社区
在PHP中模拟命名函数参数,是好是坏?
命名函数参数可以在PHP中模拟,如果我像这样编写函数 function pythonic(array $kwargs) { extract($kwargs); // .. rest of the function body } // if params are optional or default values are required function pythonic(array $kwargs = array('name'=>'Jon skeet')) { extract($kwargs); // .. rest of the function body } 除了失去Intellisense之外,这种方法的其他可能弊端是什么? 编辑: 在这种情况下 解决方案 我建议使用关联数组通过命名参数,但将它们保存在数组中而无需提取它们. function myFunc(array $args) { echo "Hi, "
0 2023-05-27
编程技术问答社区
是否可以在PHP中使用命名函数参数?
在php中,python中是否有可能具有命名函数参数?一个例子是: function foo($username = "", $password = "", $timeout = 10) { } 我想覆盖$timeout: foo("", "", 3); 丑陋.我宁愿做: foo(timeout=3); 解决方案 php 8.0添加了对命名参数的支持,并接受 a rfc ...../p> 命名参数的传递是通过将值加上参数名称的前缀之前,然后是结肠.使用保留的关键字作为参数名称.参数名称必须是标识符,不允许动态指定. 例如.在您的示例中仅通过第三选择参数: foo(timeout: 3); 在PHP中,PHP中不可能在php 8命名参数之前.从技术上讲,当您调用foo($timeout=3)时,它首先要评估$timeout=3,结果是3,并将其作为第一个参数传递给foo(). PHP强制执行参数顺序,因此可比较的呼叫需要为foo(""
2 2023-05-26
编程技术问答社区
是否可以跳过函数调用中具有默认值的参数?
我有这个: function foo($a='apple', $b='brown', $c='Capulet') { // do something } 是可能的: foo('aardvark', , 'Montague'); 解决方案 找到了这个,这可能仍然正确: 简短答案:否. 长答案:是的,以上面概述的各种kludgey方式. 其他解决方案 如果是您的功能,则可以将null用作通配符,并在函数稍后设置默认值: function foo($a=null, $b=null, $c=null) { if (is_null($a)) { $a = 'apple'; } if (is_null($b)) { $b = 'brown'; } if (is_null($c)) { $c = 'Capule
4 2023-05-26
编程技术问答社区
PHP是否具有"命名参数",以便可以省略早期参数并可以编写后来的论点?
在PHP中,只要参数具有类似的默认值: function test($t1 ='test1',$t2 ='test2',$t3 ='test3') { echo "$t1, $t2, $t3"; } test(); 但是,我们只想说我希望最后一个是不同的,但是前两个参数应使用其默认值.我能想到的唯一方法是没有成功地做到这一点: test('test1','test2','hi i am different'); 我尝试了: test(,,'hi i am different'); test(default,default,'hi i am different'); 是否有干净,有效的方法? 解决方案 使用数组: function test($options = array()) { $defaults = array( 't1' => 'test1', 't2' => 'test2',
0 2023-05-26
编程技术问答社区
vsprintf或sprintf的命名参数,或在PHP中进行简单的模板解析
我正在寻找一种使用名称参数的方法 sprintf或printf. 示例: sprintf( 'Last time logged in was %hours hours, %minutes minutes, %seconds seconds ago' ,$hours,$minutes, $seconds ); 或通过vsprintf和一个关联数组. 我在这里找到了一些编码示例 function sprintfn ($format, array $args = array()) /a> 和这里 function vnsprintf( $format, array $data) /a> 人们写自己的解决方案的地方. 但是我的问题是,是否有标准的PHP解决方案可以实现这一目标,或者有其他方法,也许是梨提供的简单PHP模板,我可以坚持使用标准的PHP来实现这一目标? 感谢您的任何帮助. 解决方案 据我所知,p
0 2023-05-26
编程技术问答社区
PHP是否允许命名参数,以便在函数调用中省略可选参数?
在调用函数/方法时,可以在PHP中指定一个命名的可选参数,跳过您不想指定的函数(例如在Python中)? 类似: function foo($a, $b = '', $c = '') { // whatever } foo("hello", $c="bar"); // we want $b as the default, but specify $c 解决方案 不,不可能( php 8.0 ):如果要传递第三个参数,则必须传递第二个参数. 也无法使用命名的参数. 一个"解决方案"是仅使用一个参数,一个数组,并始终通过它...但并不总是定义其中的所有内容. 例如: function foo($params) { var_dump($params); } 并以这种方式调用:(键/值数组) foo([ 'a' => 'hello', ]); foo([ 'a' => 'hello', 'c' => 'gl
0 2023-05-25
编程技术问答社区
Bash函数如何检测它是用位置参数还是命名参数?
我正在编写一个bash函数,该功能可以尝试使用位置或命名参数,在这种情况下,使用getopts访问通常"${2}" "${2}"和命名参数的位置参数. .我有一些示例代码和示例用法,以说明我要做什么.问题在于,我在变量${*}上进行的检查只是字符-的一个grep,它极大地限制了进一步参数的字符内容.在bash中检查命名参数的更聪明或强大的方式是什么? 示例代码: function1(){ # flags argumentsFlag1="" # n: named arguments # p: positional arguments verboseFlag1="0" # v: verbose silentFlag1="0" # 0: standard output # 1: no standard out
0 2023-05-20
编程技术问答社区
C# 4.0的新 "命名参数 "功能不是应该叫做 "命名参数 "吗?
我想这个命名可能存在历史原因,并且其他语言具有类似的功能,但在我看来,参数在C#中总是有名字.争论是未命名的.还是选择了此术语的特殊原因? 解决方案 是的,您绝对正确(无论如何,无论如何).具有讽刺意味的是,尽管我通常对这些术语很挑剔,但是当我可能应该谈论"参数传递"时,我仍然使用"参数传递".我想一个人可能会争辩说,如果您调用了一种方法,则不在乎参数名称,而当您也可以在参数上指定它们时,名称成为重要的元数据的一部分. 我同意这有所不同,术语很重要. "可选参数"肯定还可以 - 当您以前做不到时,这是在参数中添加元数据:/p> 您要我向团队寻求他们的反馈吗? 其他解决方案 哦,您想要参数!抱歉,这是参数 - 参数是左侧大厅的两个门. 其他解决方案 我不这么认为.这些名称绝对是参数的名称,因为它们被定义并给出了方法定义中的特定含义,其中将它们正确称为该方法的参数.在呼叫网站上,现在可以用他们提供的参数名称标记. 新术语是指方法呼叫者的观点 - 这是合
0 2023-05-19
编程技术问答社区
为什么我们需要在接口中指定参数名称?
当我们创建接口方法时,我们不能在 java 中做类似的事情: void interface_method(Integer,String, /* other parameter */); 相反,我注意到我们还需要给出参数名称lile: void interface_method(Integer i, String s); 也不需要与接口方法中的接口实现器具有相同的参数名称. 我在在这里.他们提到了名称参数的一种情况,但我在Java中没有发现任何其他相关原因. 解决方案 从技术角度来看,这是不必要的. 我一直将其视为语法归一化和文档辅助. 这样有: 没有理由区分类和接口方法语法, 默认Javadoc文档可以使用(描述性!)参数名称生成. 其他解决方案 没有参数名称,很难区分同一类型的参数. double divide(double, double); 惯例说第二个参数将是除数.但是有了命名的参数,它是显式且更清晰的.反过
0 2023-05-19
编程技术问答社区
OleDB参数
我有这个访问DB,该访问DD我有一个DDL的状态名称,并且是一年的DDL.我有一个vridview,我想将状态下拉列表的价值传递到" werry"子句中.显然,如果我可以将SQL与命名参数一起使用,但这就是我所坚持的,不确定如何正确格式化. 下拉列表是名称ddlstates.在我尝试的参数中 mycommand.Parameters.Add("@ddlStates") 这是数据集 public DataSet GetData() { DataSet ds; using (OleDbConnection myConnString = new OleDbConnection()) { myConnString.ConnectionString = connString; using (OleDbCommand myCommand = new OleDb
0 2023-05-19
编程技术问答社区
在Ruby中没有命名参数?
这太简单了,我不敢相信它吸引了我. def meth(id, options = "options", scope = "scope") puts options end meth(1, scope = "meh") -> "meh" 我倾向于使用哈希作为参数选项,只是因为这是牛群的做法 - 非常干净.我认为这是标准.今天,经过大约3个小时的搜查,我将一个错误追踪到这个宝石,我恰好使用该假定 nature nature参数将很荣幸.他们不是. 所以,我的问题是:在Ruby(1.9.3)中不尊重参数,还是我缺少的东西的副作用?如果不是,为什么不呢? 解决方案 实际发生了什么: # Assign a value of "meh" to scope, which is OUTSIDE meth and equivalent to # scope = "meth" # meth(1, scope) meth(1, scope = "meh") #
0 2023-05-19
编程技术问答社区
在Dart中,命名参数和位置参数的区别是什么?
DART支持命名的可选参数和位置可选参数.两者之间有什么区别? 另外,您如何确定是否实际指定了可选参数? 解决方案 飞镖具有两种可选参数:名为和位置.在讨论差异之前,让我首先讨论相似之处. dart的可选参数是可选,因为调用函数时不需要呼叫者为参数指定值. 可选参数只能在任何必需的参数后声明. 可选参数可以具有默认值,当呼叫者未指定值时使用. 位置可选参数 由[ ]包裹的参数是位置可选参数.这是一个示例: getHttpUrl(String server, String path, [int port=80]) { // ... } 在上述代码中,port是可选的,默认值为80. 您可以在有或没有第三个参数的情况下调用getHttpUrl getHttpUrl('example.com', '/index.html', 8080); // port == 8080 getHttpUrl('example.com', '
0 2023-05-19
编程技术问答社区
创建用户的参数化查询抛出缺少用户或角色名称的异常
我正在尝试使用oracle.manageddataaccess库在Oracle 12数据库上运行CREATE USER查询.此查询在不使用命名参数的情况下完美工作.但是,当我尝试使用命名参数时,看来参数未正确传递到查询. 我尝试使用以下代码的参数(注意:IM使用 oracle.manageddataaccess 库): using(OracleConnection con = new OracleConnection(_connectionString)) { con.Open(); using(OracleCommand cmd = con.CreateCommand()) { cmd.CommandText = "CREATE USER :username IDENTIFIED BY :password"; cmd.Parameters.Add("username", "A_TESTUSER"); cmd.P
2 2023-05-13
编程技术问答社区
在经典ASP中从ADODB调用一个参数化的Oracle查询
我目前正在研究与Oracle数据库对话的经典ASP项目.我正在尝试找到一种方法来安全地调用Oracle PL/SQL脚本并使用ADO传递参数.当前的解决方案通过像这样的嵌入式变量手动构建SQL脚本: strSQL = "SELECT field1, etc FROM my_table WHERE (field = '" & filter_value & "')" 当然,这是丑陋和不安全的,对虐待开放. 我到目前为止拥有的代码(从各种非经典ASP网站上窃取)看起来像这样: dim strSQL, oConn, oCommand, oParam set oConn = server.createobject("ADODB.Connection") oConn.Open myConnString strSQL = "SELECT field1, etc FROM my_table WHERE (field = :filter_field)" dim oFiltered
0 2023-05-13
编程技术问答社区