Всем привет!
Есть задачка необходимо из функции вернуть строку с именем переменной. Как сделать?
пример:
function a()
{
return "Ваше имя $name";
}
$name = "Вася";
$string = a();
echo $string; //Нужно что бы выводилось "Ваше имя Вася "
Другие языки программирования и технологии
Как передать имя переменной из функции?
function a() {
global $name;
return "Ваше имя $name";
}
$name = "Вася";
$string = a();
echo $string;
ЗЫ: какой жесткий быдлокодинг -- плакать хочется :-( Используй аргументы функции для передачи в нее значений:
function a($n) {
return "Ваше имя $n";
}
$name = "Вася";
echo a($name);
global $name;
return "Ваше имя $name";
}
$name = "Вася";
$string = a();
echo $string;
ЗЫ: какой жесткий быдлокодинг -- плакать хочется :-( Используй аргументы функции для передачи в нее значений:
function a($n) {
return "Ваше имя $n";
}
$name = "Вася";
echo a($name);
Во-первых,
echo() не функция, а языковая конструкция, которая может использоватся без скобок и выводить значения через запятую, например в отличии от print()
Во вторых,
Метод - это функция класса
В третьих, анонимные функции НЕ ДОЛЖНЫ использоватся таким образом.
Анонимные функции должны быть коллбэком
В четвертых, есть неколько способов реализации данного примера (исходя из вопроса)
1. Использовать указатели в памяти - референсы относитилено переменной которую нужно изменить.
function a(&$name){
$name = $name;
}
$name = 'test';
printf('Ваше имя %s', $name); //Ваше имя test
a('Вася');
printf('Ваше имя %s', $name); //Ваше имя Вася
2) global подходит! Глобал - делает переменнут видимой в теле заданной функции.
С глобал:
$name = 'Вася';
function(){
//$name НЕ ВИДИМА ЗДЕСЬ!!! !
//$name === NULL здесь
}
function a(){
global $name;
//$name теперь ВИДИМА ЗДЕСЬ!!! !
return "Ваше имя : $name";
}
3) Только что Вышеуказанные способы - не рекоменуемы. Это не правильно. Это не красиво. Это не технично.
Правиильно - нужно передавать параметер в функцию.
function a($name){
return "Name is $name";
}
echo a('test'); //Name is test
echo() не функция, а языковая конструкция, которая может использоватся без скобок и выводить значения через запятую, например в отличии от print()
Во вторых,
Метод - это функция класса
В третьих, анонимные функции НЕ ДОЛЖНЫ использоватся таким образом.
Анонимные функции должны быть коллбэком
В четвертых, есть неколько способов реализации данного примера (исходя из вопроса)
1. Использовать указатели в памяти - референсы относитилено переменной которую нужно изменить.
function a(&$name){
$name = $name;
}
$name = 'test';
printf('Ваше имя %s', $name); //Ваше имя test
a('Вася');
printf('Ваше имя %s', $name); //Ваше имя Вася
2) global подходит! Глобал - делает переменнут видимой в теле заданной функции.
С глобал:
$name = 'Вася';
function(){
//$name НЕ ВИДИМА ЗДЕСЬ!!! !
//$name === NULL здесь
}
function a(){
global $name;
//$name теперь ВИДИМА ЗДЕСЬ!!! !
return "Ваше имя : $name";
}
3) Только что Вышеуказанные способы - не рекоменуемы. Это не правильно. Это не красиво. Это не технично.
Правиильно - нужно передавать параметер в функцию.
function a($name){
return "Name is $name";
}
echo a('test'); //Name is test
function a($n){
return "Ваше имя $name";
}
$name = "Вася";
echo а ($name);
return "Ваше имя $name";
}
$name = "Вася";
echo а ($name);
Похожие вопросы
- Как можно передать ДВУМЕРНЫЙ массив в функцию в С++, не создавая его, как глобальный. Пример ниже:
- Реально ль в С++ сделать, чтоб название переменной и функции были одинаковыми?
- Какая функция определяет количество знаков после запятой переменной double?
- Как передать функцию в качестве параметра другой функции на C++?
- Как правильно передать указатель на функцию
- С++ Передать в функцию квадратную матрицу и вычислить сумму элементов на ее главной диагонали и вернуть эту сумму.
- Напишите пожалуйста функцию обмена значений двух переменных на си (не c++) для любого типа данных
- Есть ли смысл максимально стараться передать в функции ссылки на объекты, а не создавать их копии?
- С# - нужно сделать так, чтобы консоль читала слова, как переменные, а не просто слова...
- Как передать матрицу в функцию?