Существует не менее двух ошибок.
Функция sort()
не возвращает array
, а просто bool
.
Функция ucfirst()
не принимает array
, но только string
.
Попробуйте вместо этого:
<?php
function sortAndTitle($arr) {
sort($arr);
return array_map('ucfirst', $arr);
}
print_r(sortAndTitle([ "alhpa", "beta", "gamma" ]);
Это не использовать, чтобы проверить результат sort()
, если вы знаете, что $arr
является массивом. Он будет терпеть неудачу, если он не является массивом, поэтому не беспокойтесь об этом слишком много. Окончательный ?>
может (и должен!) Быть опущен. Это более безопасный способ написания кода для определенных фреймворков, таких как Symfony.
Кроме того, не печатайте внутри функции sortAndTtitle()
. Как говорится в названии, только сортировать и название (заглавные буквы).
Последняя строка предназначена только для вашего тестирования.
Я в замешательстве: почему ваш код делает это с объявлением функции, а затем вызовом функции, где массив даже не передается по ссылке? Почему бы вам просто не сделать это напрямую? '$ mapped = array_map (" ucfirst ", sort ($ stringsArr)))' done. –
@ Mike'Pomax'Kamermans проверяет, что возвращает 'sort()'. Он изменяет массив на месте и возвращает 'bool', поэтому ваш код также не работает. – pid
Так что просто соберите на месте, затем массив_мапа, как ответ Джибина Мэтью. –