|
|
|
|
|
для: kasmanaft
(11.01.2008 в 10:59)
| | Вот я думал о том, чтобы передавать ссылку для записи в метод, в качестве параметра... Блин, кривая система... Но что поделать!?
Спасибо, kasmanaft. | |
|
|
|
|
|
|
|
для: SHAman
(10.01.2008 в 19:18)
| | > $foo->[0]
Это, наверное, на указатель больше похоже. А если объекту присвоить ссылку на другой объект, то работа с первым будет полностью прозрачна
<?php
$a = 1;
$b = &$a;
$b++;
echo $a;
unset($a);
echo ++$b; // тем не менее, объект еще жив
// потому что кто-то на него еще ссылается...
?>
|
>> Если возвращать из метода сам массив, то будет возвращена его копия, что сожрет памяти и времени.
Копия создастся еще при передачи массива... Надо в сам метод ссылку передавать:
functuion foobar($foo) {
$foo++;
}
$foo = 1;
foobar(&$foo);
echo $foo;
|
| |
|
|
|
|
|
|
| Задача такова. Есть класс. Некоторые методы класса собирают массивы. Массивы могут быть довольно большими как по количеству элементов, так и по объему. Если возвращать из метода сам массив, то будет возвращена его копия, что сожрет памяти и времени. Хочу возвращать ссылку на массив. Порыскал в инете, нашел такое решение:
functuion &foobar() {
return $result;
}
$foo =& foobar();
|
Попробовал - работает. Но что-то меня терзают смутные сомнения. Потому что с $foo дальше можно работать как с обычным массивом. Обычно, если возвращается ссылка, то работа последующая идет как-то так:
$foo->[0] а не так: $foo[0] или я ошибаюсь?
Попробовал сделать так:
$foo = foobar(); //(убрал амперсанд)
|
результат тот же. Вопрос: работает ли возврат ссылки? И если нет, то как сделать?
PS. PHP4 | |
|
|
|
|