powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP - проблема со ссылками
2 сообщений из 2, страница 1 из 1
PHP - проблема со ссылками
    #40128666
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть библиотека на PHP, работающая с БД MySQL.
Один из методов библиотеки возвращает данные рекордсета в виде ассоциированного массива, используя mysqli_stmt_get_result и mysqli_fetch_all. На случай, если будет отсутствовать mysqlnd, я добавляю обертку для этого метода.
Примерно так:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
	private function result_fetch(...)
	{
		...
		$row = [];
		$ref = [];
		foreach ($fields as $fld)
		{
			$row[$fld->name] = null;
			$ref[] = &$row[$fld->name];
		}
		$rc = call_user_func_array(array($sth, 'bind_result'), $ref);
		unset($ref);
		...
		$ret = [];
		while ($rc = mysqli_stmt_fetch($sth))
		{
			print_r($row);
			$ret[] = $row;
		}
		mysqli_stmt_close($sth);
		...
		return $ret;
	}


На экран (print_r) выводятся правильные данные, содержимое результата запроса.
Однако в $ret все элементы массива содержат одно и то же содержимое; скорее всего это содержимое последней записи.
В $row значения элементов содержат ссылку, которая обновляется при каждом mysqli_stmt_fetch.
И когда я выполняю $ret[] = $row, до добавляю в массив значение (копию) $row, но которая содержит в своих элементах ссылки.
Как малой кровью "клонировать" содержимое $row? array_merge не помогает, ссылки в значениях все равно сохраняются. Желательно без циклом, в которых перебираются и копируются все значения $row.
...
Рейтинг: 0 / 0
PHP - проблема со ссылками
    #40128667
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Циклы — это так:
Код: php
1.
2.
				$rs = []; foreach ($row as $fld=>$val) $rs[$fld] = $val;
				$ret[] = $rs;


Так работает, но выглядит довольно коряво.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP - проблема со ссылками
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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