PHP: else
Попробуем изменить функцию из предыдущего примера так, чтобы она возвращала не просто тип предложения, а целую строку Sentence is normal или Sentence is question.
<?php
function getTypeOfSentence($sentence)
{
$lastChar = $sentence[-1];
if ($lastChar === '?') {
$sentenceType = 'question';
} else {
$sentenceType = 'normal';
}
return "Sentence is {$sentenceType}";
}
getTypeOfSentence('Hodor'); // Sentence is normal
getTypeOfSentence('Hodor?'); // Sentence is question
Мы добавили else
и новый блок с фигурными скобками. Этот блок выполнится, только если условие в if
— ложь.
Существует два способа оформления конструкции if-else. С помощью отрицания можно изменить порядок блоков:
<?php
function getTypeOfSentence($sentence)
{
$lastChar = $sentence[-1];
if ($lastChar !== '?') {
$sentenceType = 'normal';
} else {
$sentenceType = 'question';
}
return "Sentence is {$sentenceType}";
}
Какой способ предпочтительнее? Человеческому мозгу проще мыслить прямолинейно, а не через отрицание. Старайтесь выбирать проверку, которая не содержит отрицаний, и подстраивайте содержимое блоков под неё.
Задание
Реализуйте функцию normalizeUrl()
, которая выполняет так называемую нормализацию данных. Она принимает адрес сайта и возвращает его с https://
в начале.
Функция принимает адреса в виде АДРЕС
или http://АДРЕС
, но всегда возвращает адрес в виде https://АДРЕС
Есть два пути решения:
- Можно сравнить первые 7 символов строки-аргумента со строкой
http://
. - Можно использовать функцию strpos, чтобы проверить, содержится ли в строке-аргументе подстрока
http://
.
А потом на основе этого добавлять или не добавлять https://
.
Примеры вызова:
<?php
normalizeUrl('google.com'); // 'https://google.com'
normalizeUrl('http://ai.fi'); // 'https://ai.fi'
Определения
else - способ задать блок кода, который будет выполнен, если условие с
if
не удовлетворено