Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
5 / 5 / 5
Регистрация: 07.07.2014
Сообщений: 559

Что будет выведено в браузер после выполнения кода?

18.08.2014, 13:48. Показов 2464. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
function foo (&$name) {
unset ($name);
$name = "Mike";
}
$name = 'John';
foo($name);
echo "My name is $name\n";
p.s Я так понимаю, что передавая значения по ссылке, то в функции мы получим всего лишь указатель, и заансетить его не сможем ? Будит ошибка ? И вообще функция ничего не ретурнит ... Можете прокомментировать код пожалуйста ...
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.08.2014, 13:48
Ответы с готовыми решениями:

Что будет выведено на экран в результате выполнения приведенного фрагмента кода?
Что будет выведено на экран в результате выполнения приведенного фрагмента кода? int n = 1; while (n<=10) { if...

Что будет выведено на экран после выполнения программы?
Есть отрывок программы. Дописать её и что будет выведено на экран после её выполнения: s:="мама"; Insert("!",s,10);...

Что будет выведено после выполнения следующего фрагмента программы:
int main() { int a = 3; int b = 4; int c = 5; int &d = b; a = b = c; cout << a << b << c << d <<...

8
60 / 60 / 9
Регистрация: 04.02.2012
Сообщений: 214
18.08.2014, 14:00
выведет My name is John
переменная $name видна только в функции, поэтому ее изменение не будет учтено. Простым языком сказать функция выполнится, но возвращаемый результат будет null.

Добавлено через 4 минуты
все переменные объявляемые в функциях видны только в этих функциях, если же конечно они не были объявлены ранее как глобальные. Т.е. если бы была запись global $name, то мы бы получили запись "My name is Mike"
1
5 / 5 / 5
Регистрация: 07.07.2014
Сообщений: 559
18.08.2014, 14:03  [ТС]
Allexxisss,то есть получается $name = "Mike" - явл. локальной, а $name = 'John' - глобальной. И так как мы обращаемся к перем. в глобальной области видимости, то и подставиться глобальная переменная ??
0
60 / 60 / 9
Регистрация: 04.02.2012
Сообщений: 214
18.08.2014, 14:58
не совсем. как бы объяснить понятнее. Все переменные объявлены локально. Все переменные объявленные внутри функции будут не видны в основном коде php, если же они не были объявлены как глобальные. Тобишь если бы была запись такого вида:
PHP
1
2
3
4
5
6
7
8
global $name; // объявляем переменную как глобальную
function foo (&$name) { 
$name = "Mike"; // снова создаем
}
// здесь начинается выполнение кода
$name = 'John'; // создаем $name
foo($name); // вызов функции foo
echo "My name is $name\n"; // вывод результата
то мы получили бы "My name is Mike"

Добавлено через 4 минуты
НО!!!!!!!!!
PHP
1
2
3
4
5
6
7
8
global $name;
function foo (&$name) { 
unset ($name); // удаляет переменную (!!!!!!!!!!!!!!!!!!!)
$name = "Mike";
}
$name = 'John';
foo($name);
echo "My name is $name\n";
вернет нам снова John!!!! Потому что внутри функции есть unset - удаляет текущую переменную, но так как она была глобальной, то эту переменную удаляет. И далее снова идет объявление $name - но она уже будет локальной и поэтому в основном коде не будет видно. Соответственно вернется исходное значение $name установленной в $name = 'John'
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
18.08.2014, 15:12
Лучший ответ Сообщение было отмечено maximillian77 как решение

Решение

Цитата Сообщение от Allexxisss Посмотреть сообщение
то мы получили бы "My name is Mike"
Вы это получите, даже если уберете строку
PHP
1
global $name;
. Проверьте.
В то же время если добавить эту строку к коду автора, так же ничего не изменится. Вы просто зачем то убрали строку с unset().

Да и вообще вы global не правильно используете. Его используют внутри функций, чтобы указать что в функции будут обращаться к глобальной переменной а не к локальной.

А вне функции нет смысла использовать слово global, так как любая переменная созданная вне функции будет глобальной.

А в примере автора вообще разговор идет о ссылках. Обратите внимание какой параметр принимает функция:
function foo (&$name) {
а не просто
function foo ($name) {
Цитата Сообщение от maximillian77 Посмотреть сообщение
p.s Я так понимаю, что передавая значения по ссылке, то в функции мы получим всего лишь указатель, и заансетить его не сможем ? Будит ошибка ? И вообще функция ничего не ретурнит ... Можете прокомментировать код пожалуйста ...
В функцию передается ссылка на переменную. Далее ссылка удаляется. Далее создается локальная переменная $name. При этом значение глобальной переменной не меняется.

Если убрать unset(), то в функцию передается ссылка, переменной по этой ссылке задается новое значение. Соответственно глобальная переменная изменится...

И почему Вы спрашиваете какой будет результат? У Вас что, даже проверить негде?
0
60 / 60 / 9
Регистрация: 04.02.2012
Сообщений: 214
18.08.2014, 15:13
я все это вижу. по поводу использовать где именно global я не соглашусь с вами. Мы указываем его в начале чтобы в дальнейшем использовать ее и внутри функций. Убрал unset специально показать.
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
18.08.2014, 15:15
Цитата Сообщение от Allexxisss Посмотреть сообщение
я все это вижу. по поводу использовать где именно global я не соглашусь с вами. Мы указываем его в начале чтобы в дальнейшем использовать ее и внутри функций.
Ну что за глупости? От того согласитесь вы со мной или нет, правда не изменится. Все ведь можно проверить. По Вашим словам этот скрипт
PHP
1
2
3
4
5
6
7
8
9
 <?
global $a;
function foo($a)
{
    $a = "2";
}
$a = 1;
foo($a);
echo $a;
Выведет 2. Но проверьте, как будет на самом деле...
1
60 / 60 / 9
Регистрация: 04.02.2012
Сообщений: 214
18.08.2014, 15:49
Ох и правда. Вы открыли мне глаза! Как бы не ослепнуть
1
5 / 5 / 5
Регистрация: 07.07.2014
Сообщений: 559
18.08.2014, 16:05  [ТС]
pav1uxa,Allexxisss,вроде как разобрался, спасибо ребята!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.08.2014, 16:05
Помогаю со студенческими работами здесь

Определить, что будет выведено после выполнения данной программы
какой тут ответ будет? begin k:=0; for i:=1 to N do for j:=N-i+1 to N do begin k:=k+1; F=k; end;

Что будет выведено на экран после выполнения процедуры Massiv?
В программе описан одномерный массив следующим образом: A:array of integer; Что будет выведено на экран после выполнения процедуры...

Что будет выведено на экран, после выполнения данной программы:
Что будет выведено на экран, после выполнения данной программы: 1) a=8, n=5 Program...

Что будет выведено на экран после выполнения данного фрагмента программы?
Что будет выведено на экран после выполнения данного фрагмента программы?&lt;br&gt; for I:=1 to 4 do begin &lt;br&gt; a:=abs(-8+i); write(a,'...

Что будет выведено на экран после выполнения процедуры Massiv для заданного двумерного массива?
Что будет выведено на экран после выполнения процедуры Massiv для заданного двумерного массива? Matr= 36 33 43 4 24 11 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru