Проблема с функцией PHP ucwords - PullRequest
0 голосов
/ 18 сентября 2018

Мне нужно сделать функцию, которая читает мои переменные сверху и фиксирует строку так, чтобы каждое слово в ней имело заглавную букву.То, как я сейчас это делаю, похоже, не работает.Вот что у меня есть:

<?php
$course1 = "advanced web development";
$course2 = "mobile app development";
$course3 = "info systems with business intell";
function fixCourseName($courseName) {
    $courseName = ucwords($courseName);
}

fixCourseName($course1);
echo $course1;
?>

Кто-нибудь знает, что может привести к тому, что вывод будет по-прежнему в нижнем регистре?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Вы можете передать его по ссылке, используя оператор & перед переменной при передаче его в качестве аргумента.Это изменит переменную, через которую вы проходите, без необходимости возвращать ее.Затем переменная изменяется в глобальной области видимости.

function fixCourseName(&$courseName) {
    $courseName = ucwords($courseName);
}
fixCourseName($course1);
echo $course1;

Вы также можете returnновое значение, но затем оно должно быть присвоено снова.

function fixCourseName($courseName) {
    return ucwords($courseName);
}
$course1 = fixCourseName($course1);
echo $course1;

Лучшее решение, если функция fixCourseName() не делает ничего, кроме использования ucwords(), вы могли бы просто использовать

$course1 = ucwords($course1);
echo $course1;

Посмотрите live демо , чтобы увидеть все это в действии.

0 голосов
/ 18 сентября 2018

Ваша функция получает копию переданной ей строки и затем обновляет ее.Если вы хотите, чтобы это влияло на исходную переменную, которая передается ей, вам нужно передать ее по ссылке , добавив &:

function fixCourseName(&$courseName) {
    # Here ------------^
    $courseName = ucwords($courseName);
} 

Если ваша функция просто вызываетucwords, вам это не нужно - просто позвоните ucwords напрямую:

$course1 = ucwords($course1);
...