使用可选参数调用PHP函数时,如何指定可选参数保留为默认值?其他语言可以使用default
关键字 - substr($str, 0, default)
。
示例:substr($str, 0, null)
我已将null
指定为$length
参数,因此它将返回一个空字符串,实际上我想要整个字符串。
来自substr
文档:
如果长度为 0 , FALSE 或 NULL ,则会返回空字符串。
所以在这种情况下,我不能像往常那样指定null
,我也不能指定数字。
问题
$length
的{{1}}参数的默认值是什么?真实示例:
我想从格式不正确的网址中提取主机名。
substr
在上面的示例中,$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
。
答案 0 :(得分:1)
尝试使用以下内容:
$host = substr($url, 0, strpos($url, '/') ?: strlen($url));
您的问题的完整答案是否,PHP没有任何预定义的常量到默认值。通过predefined constants链接到手册。
但你可以定义值取决于你使用的函数,如strlen()用于substr()$ lenght参数。
您也可以通过call_user_func_array()
调用函数,具体取决于参数例如使用substr():
<?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);
实例here
答案 1 :(得分:-1)
PHP文档也为我提供了恶意软件警报。但不要担心,因为还有w3schools:http://www.w3schools.com/php/func_string_substr.asp
根据网站:
长度
可选。指定返回字符串的长度。 默认是 字符串的结尾。
答案 2 :(得分:-1)
如果这是你要问的话
function myfunc($para1,$optional_para = null){
//do stuff
}
所以myfunc($ para)和myfunc($ para,$ optional)都是有效的