2014-11-25 78 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