Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Странное поведение кода PHP / 1 сообщений из 1, страница 1 из 1
04.07.2025, 17:41
    #40141088
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Странное поведение кода PHP
Столкнулся со штукой, которую не могу понять.

Есть такой код с циклом:
Код: PHP
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
foreach ($lst['users'] as $login=>$rec)
{
  if (!isset($rec)) continue;
  if (!isset($rec['user'])) continue;
  $user = $usr[$rec['user']];
  $group = $rec['group'];
  $id = $rec['id'];
  $state = $rec['state'];
  ...
  $arg = [];
  $arg['state'] = $state;
  $arg['password'] = $user['password'];
  ...
$log->dbg("*** {$login} до обновления", ['login'=>$login, 'rec'=>$rec, 'user'=>$user, 'group'=>$group]);
  $tmp = $mc->user($rec['id'], $arg);
$log->dbg("*** {$login} после обновления", ['login'=>$login, 'rec'=>$rec, 'user'=>$user, 'group'=>$group, 'tmp'=>$tmp]);
  ...

};
Так вот "после обновления" почему-то выводятся данные для следующего элемента в цикле.
Причем это происходит в момент вызова $mc->user — там в $arg появляются данные, которые должны быть при следующем проходе цикла.
Не могу понять, как такое может быть. Доступ по ссылке не используется, передаваемые аргументы копируются по значению, изменить их вызывающая процедура не может (да и откуда ей знать, что будет на следующем проходе цикла).
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Странное поведение кода PHP / 1 сообщений из 1, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]