2014-11-25 70 views
0

我有以下代码。我期待的检查方法hasQuerystring()通过修改url ..PHP通过引用

然而,结果表明,hasQuerystring始终返回false,含义内,参数没有指向修改url ..

这里是代码:

private function __addParams(&$url, $params, $addedParams = null) { 
    if(!empty($addedParams)) { 
     foreach($params as $param => $val) { 
      if(!in_array($param, $addedParams)) { 
       $url .= ($this->__hasQuerystring($url))? "&{$param}={$val}" : "?{$param}={$val}" ; 
      } 
     } 
    } else { 
     foreach($params as $param => $val) { 
      $url .= ($this->__hasQuerystring($url))? "&{$param}={$val}" : "?{$param}={$val}" ; 
     } 
    } 
    return $url; 
} 

private function __hasQuerystring($url) { 
    return strpos('?',$url); 
} 

[编辑]

这是url b之前的值eing返回

https://mobile.domain.com/en/#/#m=2&eid=123?param1=9675?param2=23d9dj8rsaE3dG1

+0

检查埃里克答案。我也编辑了我的答案。 – machineaddict 2014-11-25 09:01:08

回答

0

return strpos($url, '?') !== FALSE; 

经常检查更换the manual

return strpos('?',$url); 

警告

这个函数可以返回布尔值FALSE,但也可能返回的值为FALSE一个 非布尔值。请阅读关于 布尔部分的更多信息。使用===运算符来测试此函数的返回值 。

这就是为什么总是返回FALSE。

另外,如果你不从__addParams使用结果,您可以删除return $url;

后来编辑:

我换成return strpos('?',$url) !== FALSE;return strpos($url, '?') !== FALSE;为埃里克指出。

+0

谢谢,我错过了。但是,这并没有解决我的问题..哦,是的,我正在使用返回的url值.. – logixmeister 2014-11-25 08:52:24

+0

然后'print_r($ url);''之前'返回$ url;' – machineaddict 2014-11-25 08:54:31

+0

'这就是为什么总是返回FALSE.' this有点模糊。为什么它总是返回假? – 2014-11-25 08:59:10