Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > & и головная боль!


Автор: sergejzr 5.4.2006, 20:18
Кто обьяснит, в чём дело с этими &?
В одной версии ПХП они работают так, в другой иначе.

Как заставить два сервера с разными ПХП работать одинакого?

Автор: TwiSteR 5.4.2006, 20:23
sergej.z,
Вопрос мутный. Конкретную проблему скодом плиз.

Автор: Guedda 5.4.2006, 20:30
Цитата(sergej.z @ 5.4.2006, 21:18 Найти цитируемый пост)
Как заставить два сервера с разными ПХП работать одинакого?

Различия идут в версиях php 4 и 5.
Поэтому пиши для каждой версии свою функцию, например:
Код

function test_for_php_4()
{
//...
}

//...

function test_for_php_5()
{
//...
}

и проверяй, какая версия, после этого выводи ту или иную функцию. Это мое ИМХО, и, вроде, как самое простое. По другому, ИМХО, никак.

Автор: Illuminaty 5.4.2006, 21:02
Сергей, проблему поконкретней обрисуй

Автор: sergejzr 5.4.2006, 21:04
вот у меня код такой:

Код

$x=array();
$row=что_то_там_из_Мускула();

$x['field']=&$row;

print_r($x);


Вот, на линуксе PHP 5.0.3 всё работает. На винде 5.1.2 не работает... А работает так:
Код

$x=array();
$row=что_то_там_из_Мускула();

$x['field']=$row;

print_r($x);

Автор: Illuminaty 5.4.2006, 21:19
может надо писать так?
Код

&$row

Автор: sergejzr 5.4.2006, 21:22
Нет, это я сейчас опечатался. smile

Автор: Serkys 5.4.2006, 21:24
Код

$x['field']=row;

ИМХО неправильно. Сначала будет искать константу row, и если она будет у тебя определена - присваивать её значение себе.

sergej.z, ты мануал читал?
Вот две цитаты:
Код

$bar = &$foo;      // Это верное присвоение.


Гы smile
Добавлено @ 21:25
Упс, опаздал. smile

Автор: Guedda 5.4.2006, 21:28
Ну вот и сделай функции:
Код

function is_version_503()
{
$x=array();
$row=что_то_там_из_Мускула();
$x['field']=&$row;
print_r($x);
}
function is_version_512()
{
$x=array();
$row=что_то_там_из_Мускула();
$x['field']=$row;
print_r($x);
}

if(phpversion() == "5.0.3") {is_version_503();}
elseif(phpversion() == "5.1.2") {is_version_512();}

Автор: Illuminaty 5.4.2006, 21:28
а в $row что лежит?
var_dump($row) покажи.
И еще покажи какую ошибку выводит (что не работает во втором варианте)
Добавлено @ 21:29
Guedda, не метод. Надо понять причину.
Добавлено @ 21:37
Сергей, у меня Win, Apache, PHP 5.0.4
два кода
1)
Код

$x=array();
$row=5;
$x['field']=$row;
var_dump($x);
Выдает: array(1) { ["field"]=> int(5) }
2)
Код

$x=array();
$row=5;
$x['field']=&$row;
var_dump($x);
Выдает: array(1) { ["field"]=> ∫(5) }

Автор: sergejzr 5.4.2006, 21:41
в $row лежит массив из базы, полученный mssql_fetch_assoc.

Dj втором варианте просто пусто. Никакой ошибки.

Автор: Illuminaty 5.4.2006, 21:52
1)
Код

$x=array();
$row = array(5, 6, 7);
$x['field']=&$row;
var_dump($x);

Вывод: array(1) { ["field"]=> &array(3) { [0]=> int(5) [1]=> int(6) [2]=> int(7) } }
2)
Код

$x=array();
$row = array(5, 6, 7);
$x['field']=$row;
var_dump($x);

Вывод: array(1) { ["field"]=> array(3) { [0]=> int(5) [1]=> int(6) [2]=> int(7) } }

Подводя итоги: не понятно что-то.

Автор: Ciber SLasH 8.4.2006, 00:01
Цитата(Illuminaty @ 5.4.2006, 22:52 Найти цитируемый пост)
Подводя итоги: не понятно что-то.

А что тут не ясного? Всё верно вывелось...

Автор: Illuminaty 8.4.2006, 06:22
Ciber SLasH, не ясно то, почему у Сереги не так выводится

Автор: sergejzr 8.4.2006, 12:03
Я короче говоря убрал все указатели. Так спокойнее..

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)