Всем привет. Вопрос по PHP. Параметры указываются в определении функции, внутри круглых скобок, и являются ее локальными переменными, т.е. они видны только в ее теле, если параметров несколько, то они указываются через запятую. Но в примере параметр $color указываются вне функции. Объясните пожалуйста. Спасибо.
<?php
// Определение функции
function my_car($car, $color) { // Указано два параметра: $car и $color
echo "Марка моей машины: $car и она имеет $color цвет";
}
$color = 'красный';
// Вызываем функцию и передаем ей два аргумента
my_car('BMW', $color); // Аргументы - строковой литерал и переменная
?>
Просто переменную вне функции и внутри функции назвали одинаково. Но это абсолютно разные переменные. С таким же успехом можно было просто написать:
function my_car($car, $color) {
echo "Марка моей машины: $car и она имеет $color цвет";
}
$this_is_my_var_with_some_value = 'красный';
my_car('BMW', $this_is_my_var_with_some_value);
Вы все правильно начали, Определение функции
.
Так вот, для определения используется зарезервированное слово function
далее идет название_ функции
и прототип функции (где перечисляются параметры, через запятую)
, а дальше следует тело функции {}
, где будут видны эти переменные.
То, что переменная $color
определена вне функции - эту переменную, функция не видит, хоть переменная и находится в глобальной области видимости.
Функция имеет локальную область видимости.
Для того, чтобы функция увидела переменную, вы ее и передаете в прототип функции:
my_car('BMW', $color);
Есть еще конструкция global
- которая приглашает переменную в локальную область видимости функции.
$color = 'red';
function my_car() {
global $color;
return $color;
}
echo my_car(); // red
Конечно не рекомендую использовать эту конструкцию.
В вашем случае может еще появиться переменная $car
- которая также будет передаваться в прототип функции.
$car = 'BMW';
$color = 'black';
my_car($car, $color);
Примерно такое-же происходит и с ООП:
class Car {
public $car, $color;
public function __construct($car, $color) {
$this->car = $car;
$this->color = $color;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Доброго времени суток, в каждом своем проекте строю пагинацию по новому, тк
Есть таблица usersВ ней есть username и id столбцы