PHP передать по ссылке

У меня есть следующий код. Я ожидаю, что метод проверки 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

0

Решение

С strpos сначала вы передаете вещь для поиска, затем вещь для поиска следующей.
Смотрите документацию:
http://php.net/manual/en/function.strpos.php

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

Другие решения

замещать

return strpos('?',$url);

с

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

Всегда проверяйте руководство.

Предупреждение

Эта функция может возвращать логическое значение FALSE, но также может возвращать
небулево значение, которое оценивается как ЛОЖЬ. Пожалуйста, прочитайте раздел
Booleans для получения дополнительной информации. Используйте оператор === для тестирования
возвращаемое значение этой функции.

Вот почему всегда возвращается ЛОЖЬ.

Кроме того, если вы не используете результат из __addParamsВы можете удалить return $url;

Позже отредактируйте:

Я заменил return strpos('?',$url) !== FALSE; с return strpos($url, '?') !== FALSE; как указал Эрик.

0

По вопросам рекламы [email protected]