<?php
/**
* PHP Challenge vol.4 - Pan od informatyki
*
* Napisz funkcję która przyjmie jako parametr literę na jaką musi zaczynać się imię, oraz imiona ze zmiennej $data
* i zwróci tablicę imion, jednocześnie zmieniając pierwszą literę imienia na wielką
*/
$data = 'judyta; julia; kamila; karina; laura; lena; magdalena; maja; nadia; natalia; olga; oliwia; pamela; patrycja; regina; renata;
sabina; sandra; tamara; tatiana; urszula; weronika; wiesława; zofia; zuzanna; Żaneta; adam; bartłomiej; bartosz; cezary; cyprian;
damian; daniel; edward; emanuel; fabian; feliks; gabriel; gerard; henryk; herbert; ignacy; igor; jacek; jakub; kacper; kajetan; lech;
leon; maciej; maksymilian; nikodem; norbert; olaf; olgierd; patryk; paweł; radosław; rafał; sebastian; seweryn; tadeusz; teodor; wacław;
waldemar; zdzisław; zygmunt';
// Aby rozpocząć edycję kliknij w przycisk powyżej "Fork this"
// Aby uruchomić moje rozwiązanie należy odkomentować poniższą linijkę
require('rozwiazanie.php');
<?php
/**
* Główna funkcja zwracająca listę wyfiltrowanych imion
*/
function getNames($data, $firstLetter){
$list = _getNamesListFromString($data);
$list = _filterLetterList($list, $firstLetter);
$list = _upperFirstLetter($list);
return $list;
}
/**
* Funkcja przetwarzająca ciąg imion w tablicę, jednocześnie usuwając białe znaki z początku i końca imienia
*/
function _getNamesListFromString($data, $separator = ';'){
$data = explode($separator, $data);
foreach($data as &$item){
$item = trim($item);
}
return $data;
}
/**
* Funkcja filtrująca listę i zostawiająca tylko imiona zaczynające się na wybraną literę
*/
function _filterLetterList($list, $firstLetter){
$list = array_filter($list, function($item) use ($firstLetter) {
return $item[0] == $firstLetter || $item[0] == strtolower($firstLetter);
});
return $list;
}
/**
* Funkcja zmieniająca pierwszą literę imienia na wielką
*/
function _upperFirstLetter($data){
array_walk($data, function(&$item){
$item = ucfirst($item);
});
return $data;
}
/**
* Wywołanie funkcji
*/
$out = getNames($data, 'R');
var_dump($out);