Php 默认关键字-可选函数参数
当使用可选参数调用PHP函数时,如何指定一个参数,使可选参数保持默认值?其他语言有一个可以使用的Php 默认关键字-可选函数参数,php,Php,当使用可选参数调用PHP函数时,如何指定一个参数,使可选参数保持默认值?其他语言有一个可以使用的default关键字-substr($str,0,default) 示例:substr($str,0,null) 我指定了null作为$length参数,因此它将返回一个空字符串,实际上我需要整个字符串 从substr文档中: 如果给定的长度为0,FALSE或NULL将返回一个空字符串 因此,在这种情况下,我不能像通常那样指定null,也不能指定数字 问题 substr的$length参数的默认值
default
关键字-substr($str,0,default)
示例:substr($str,0,null)
我指定了null
作为$length
参数,因此它将返回一个空字符串,实际上我需要整个字符串
从substr
文档中:
如果给定的长度为0,FALSE或NULL将返回一个空字符串
因此,在这种情况下,我不能像通常那样指定null
,也不能指定数字
问题
的substr
参数的默认值是什么$length
- 是否有办法将参数指定为默认值,即默认关键字/运算符
真实示例: 我想从格式不好的URL中提取主机名
$url = 'example.com';
if(!$host = parse_url($url, PHP_URL_HOST))
{
//There is no URL protocol so parse_url won't work
$host = substr($url, 0, strpos($url, '/') ?: null);
}
echo $host;
在上面的示例中,$host
是一个空字符串,因为$url
不包含任何正斜杠(/
)。如果在$url
的末尾添加斜杠,则它可以正常工作($url='example.com/'
)
我意识到我只能使用一个
if
子句而不是三元组,但我想知道是否有任何方法可以发送一个默认参数而不是nullPHP文档也会向我发出恶意软件警报。但不要担心,因为还有很多学校:
根据该网站:
长度
可选。指定返回字符串的长度默认设置为
字符串的结尾
如果这是你要问的
function myfunc($para1,$optional_para = null){
//do stuff
}
所以myfunc($para)和myfunc($para,$optional)都是有效的
$host = substr($url, 0, strpos($url, '/') ?: strlen($url));
您的问题的完整答案是否定的,PHP没有任何预定义的常量到默认值。使用链接到手册
但您可以定义值,这取决于您使用的函数,如substr()的strlen()$lenght参数
还可以根据参数通过call_user_func_array()调用函数
例如,substr()
不幸的是,我现在无法访问PHP文档,Google报告了恶意软件的泛滥。相反,我一直在引用我的IDE文档,所以我希望答案不是显而易见的。你是通过谷歌搜索访问这些文档的吗?这也发生在我身上,所以我只是将docs addrees直接放在地址栏上。如果省略了长度,则将返回从开始到字符串结束的子字符串。
@jasonoo,我知道,这就是我想要做的(拥有完整的字符串)。但是我还想指定$length
参数作为默认值。似乎没有人真正理解我的意思,我编辑了这个问题以澄清(希望如此)。我还有其他方法可以做到这一点,我只是想知道它,没有真正的问题。我想发布W3傻瓜布拉布拉的东西,但后来我意识到没有其他选项可以很好地解释它与php.net关闭:(.谢谢,但我想发送默认参数。例如substr($str,0,默认值)
.PHP有一个default
关键字,但这是用于switch语句的。@Drahcir wht应该是default的长度?@crook\u Sense10,我不明白你的问题,default不是一个数字。谢谢,但不,这不是我要问的。谢谢,它可以工作,但它并不能真正回答问题。
<?php
$url = 'example.com/123';
$params = array($url, 0);
$tmp = strpos($url, '/') ? strpos($url, '/'): null;
if(!is_null($tmp))
array_push($params ,$tmp);
$result = call_user_func_array('substr', $params );
var_dump($result);