С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для Pafos
97 / 97 / 17
Регистрация: 18.10.2009
Сообщений: 453

function и for

02.12.2010, 19:31. Показов 826. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
И снова Я!

Не могу розобратся...
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
 
  $ar   = array(10);
  $five = 5;
 
  function test($ar, $five) {
      return $ar[] = end($ar) + $five;
  }
  
  for ($i = 1; $i <= $five; $i++) {
      echo test($ar, $five);
      echo '<br />';
  }
 
  // Выводит
  //15
  //15
  //15
  //15
  //15
  
?>
Выводит 5 раз по 15, тоесть 5 не плюсуется... плюсуется, но оно берёт одно и тоже число (10), а ведь в функции результат вносится в массив, и соответственно последний элемент массива меняется...
Что я не правильно написал, в чём проблема и как её решить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.12.2010, 19:31
Ответы с готовыми решениями:

FUN must be a function, a valid string expression, or an inline function object
Здраствуйте, нужна помощь. clear all; close all; Scr_data_C; Scr_data_L; fv = 10:10:10000; Zc = cond(dataC,fv); Zl =...

Function or interface marked as restricted, or the function uses an Automation type not supported
Добрый день! Столкнулась с неожиданной проблемой: Объявляю переменные для программы глобально. 'Данные заказчика Dim Name...

FUNCTION new.COUNT does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual
Ругаеться на COUNT , что тут не так ? $result = mysql_query(&quot;SELECT COUNT (`model`.`cat_id`) FROM ...

10
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
02.12.2010, 20:36
PHP
1
2
3
  function test(&$ar, $five) { // $arr передаем по ссылке
      return $ar[] = end($ar) + $five;
  }
1
 Аватар для Pafos
97 / 97 / 17
Регистрация: 18.10.2009
Сообщений: 453
02.12.2010, 20:42  [ТС]
Цитата Сообщение от ostgals Посмотреть сообщение
PHP
1
2
3
  function test(&$ar, $five) { // $arr передаем по ссылке
      return $ar[] = end($ar) + $five;
  }
Работает!Спасибо
А как понять: "$arr передаем по ссылке"? Что означает "&"?
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
02.12.2010, 21:00
Это означает, что в функцию передается не копия переменной (как обычно по умолчанию), а та же самая переменная.
0
 Аватар для Pafos
97 / 97 / 17
Регистрация: 18.10.2009
Сообщений: 453
02.12.2010, 23:43  [ТС]
Цитата Сообщение от ostgals Посмотреть сообщение
Это означает, что в функцию передается не копия переменной (как обычно по умолчанию), а та же самая переменная.
Понял, спасибо!
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
03.12.2010, 00:50
Цитата Сообщение от ostgals Посмотреть сообщение
Это означает, что в функцию передается не копия переменной (как обычно по умолчанию), а та же самая переменная.
ostgals, дарова, вроде понятно, механизм не понятен. допустим переменная = 1, я делаю копию (т.е. опять таки 1) и передаю ф-ии, какая разница, какую единицу я передаю, настоящую или копию..??
что не так понял?
0
 Аватар для ostgals
886 / 681 / 101
Регистрация: 23.01.2009
Сообщений: 1,582
03.12.2010, 10:57
Цитата Сообщение от Love_and_Peace Посмотреть сообщение
что не так понял?
Объясняю на примере:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$a = 1;
 
function foo1($x) {
    $x = 2; // изменяется только копия $a, занесенная в $x
}
 
function foo2(&$x) {
    $x = 2; // изменяется сама переменная $a, так как $x - ссылка на $a
}
 
foo1($a);
echo $a; // 1
 
foo2($a);
echo $a; // 2
1
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
03.12.2010, 11:24
Цитата Сообщение от ostgals Посмотреть сообщение
// изменяется только копия $a, занесенная в $x
означает ли это что в дальнейшем в коде $a будет равняться 1, а двум она будет равняться только внутри ф-ии (т.е сама переменная остается такой же, а используется только ее значение)?
а во втором случае $a полностью изменяется и теперь она = 2, откуда бы к ней не обращались..
0
Автор FAQ
 Аватар для insideone
3687 / 964 / 114
Регистрация: 10.01.2010
Сообщений: 2,550
03.12.2010, 11:31
означает ли это что в дальнейшем в коде $a будет равняться 1, а двум она будет равняться только внутри ф-ии (т.е сама переменная остается такой же, а используется только ее значение)?
Именно, переменная будет использована только для создания клона значения из неё

а во втором случае $a полностью изменяется и теперь она = 2, откуда бы к ней не обращались
Если $a объявлена в global scope то если делается global $a; то да, она будет 2. Иначе - то значение которое было присвоено ей в данном пространстве.
1
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
03.12.2010, 14:32
Как работают ссылки в PHP
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
03.12.2010, 15:09
>> global $a; то да, она будет 2
разве через global $a будет равняться двум везде и без передачи по ссылке, а на прямую через значение?

вот же при выводе в браузере появляется 2
PHP
1
2
foo2($a);
echo $a; // 2
значит в скрипте больше нет места где $a = 1, не так?

Добавлено через 7 минут
правильна ли мысль, что при передаче по значению (т.е напрямую) просто используется значение перменной, а передача по ссылке меняет значение той переменной значение котрой используется?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.12.2010, 15:09
Помогаю со студенческими работами здесь

C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend
выкидывает C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend при компиляции. что делать?

Call to undefined function '_beginthreadex' in function main()
Здесь реализуется задача о 5-ти китайских философах, обедающих за столом #include&lt;windows.h&gt; //подключаем библиотеки ...

Expected function body after function declaration
почему выдается эта ошибка ?

различия между Function и Static Function
Добрый день. Наткнулся вот на такую неприятность. В библиотеке есть функция get_doc, возвращающая NotesDocument В коде я...

Class member function to std::function
Всем привет. Вопрос: почему 43 строка не работает? #include &lt;functional&gt; #include &lt;iostream&gt; template &lt;typename C,...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
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/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru