php 49 задание
есть функция
function sum($a, $b) {
$result = false;
if(!is_numeric($a)) {
$result = "не число";
} else if (!is_numeric($b)) {
$result = "опять нe число";
} else {
$result = $a + $b;
}
return $result;
}
echo sum(68, 148);
Зачем в ней писать $result = false; и что вообще это значит не могу разобраться!
6 ответов
$result = false; предназначен для проверки самой функции.
Если в echo sum (68, 148); напишете к примеру ("string", 148), тогда функция выдаст что 'a' -это не число.
Или если вы поменяете местами значения к примеру: echo sum(148, "string"),
тогда выдаст что 'b' - не является числом.
Ничего и не изменится, но если захотите использовать эту функцию где-то в программе, как вы узнаете, что функция верно сработала или нет? Для этого и возвращают false, типа:
if(!sum($a, $b)) {
// Если что-то пошло не так, сработает этот участок кода
} else {
// Если не возвращает false функция sum, значит этот участок кода сработает
}
А мне все же из пояснений ничего не понятно.
Предположила, что $result = false; "защищает" от ошибок, которые мы могли не предусмотреть в условиях, но... Выполнила следующие проверки с $result = false и без: результат идентичен.
1. Задала функции sum одно входящее значение переменной:
function sum($a, $b) {
$result = false;
if (!is_numeric($a)) {
$result = "a не является числом";
} else if (!is_numeric($b)) {
$result = "b не является числом";
} else {
$result = $a + $b;
}
return $result;
}
echo sum(6);
Ответ: Fatal error: Uncaught ArgumentCountError: Too few arguments to function sum(), 1 passed in C:\xampp\htdocs\kinomonster\index.php on line 16 and exactly 2 expected in C:\xampp\htdocs\kinomonster\index.php:3 Stack trace: #0 C:\xampp\htdocs\kinomonster\index.php(16): sum(6) #1 {main} thrown in C:\xampp\htdocs\kinomonster\index.php on line 3
2. Задала слишком большие числа:
function sum($a, $b) {
$result = false;
if (!is_numeric($a)) {
$result = "a не является числом";
} else if (!is_numeric($b)) {
$result = "b не является числом";
} else {
$result = $a + $b;
}
return $result;
}
echo sum(61E+176, 61E+361);
Ответ: INF
Отсюда вопрос: так для чего нужна строка $result = false?
Евгения Иванова,
1. Ошибка:
Ответ: Fatal error: Uncaught ArgumentCountError: Too few arguments to function sum(), 1 passed in C:\xampp\htdocs\kinomonster\index.php on line 16 and exactly 2 expected in
Говорит эта ошибка о том, что функция должна принимать несколько аргументов на вход, вы подаете только один аргумент:
echo sum(6);
Поэтому показывается такая ошибка. Если один аргумент необязательный, тогда можно задать в функции значение по умолчанию в аргументе вот так:
function sum($a, $b = 123) {
...
Смотри здесь документацию по PHP, тритий пример:
https://www.php.net/manual/en/functions.arguments.php
2. Пример с inf
Для инфинитивов тоже есть функция проверки в php, смотри функцию is_infinite здесь:
https://www.php.net/manual/en/function.is-infinite.php
Возврат слишком большого число - это не совсем ошибка, а php сообщает, что вычисляется лишком большое число, которое не уместится в памяти.
Отсюда вопрос: так для чего нужна строка $result = false?
По сути result уже не false (пример 2 с inf), так как переменной $result все же присваивается значение, даже если это число слишком большое. В иных случаях, $result будет false или ошибка вызова функции.
А разве нельзя осуществлять проверку без этой строки.Пробовал не писать ее ничего не измен лось вроде
Спасибо огромное за пояснение