У меня есть следующий код. Я ожидаю, что метод проверки hasQuerystring()
передать модифицированный url
..
Однако результат показывает, что 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
перед возвращением
https://mobile.domain.com/en/#/#m=2&eid=123?param1=9675?param2=23d9dj8rsaE3dG1
С strpos
сначала вы передаете вещь для поиска, затем вещь для поиска следующей.
Смотрите документацию:
http://php.net/manual/en/function.strpos.php
return strpos($url, '?') !== FALSE;
замещать
return strpos('?',$url);
с
return strpos($url, '?') !== FALSE;
Всегда проверяйте руководство.
Предупреждение
Эта функция может возвращать логическое значение FALSE, но также может возвращать
небулево значение, которое оценивается как ЛОЖЬ. Пожалуйста, прочитайте раздел
Booleans для получения дополнительной информации. Используйте оператор === для тестирования
возвращаемое значение этой функции.
Вот почему всегда возвращается ЛОЖЬ.
Кроме того, если вы не используете результат из __addParams
Вы можете удалить return $url;
Позже отредактируйте:
Я заменил return strpos('?',$url) !== FALSE;
с return strpos($url, '?') !== FALSE;
как указал Эрик.