|
|
|
| Попробовал использовать вместо глобальных переменных $_SESSION
С обычными переменными все хорошо - как присвоение, так и использование.
Но когда попробовал использовать массив, получил странную ситуацию:
1. новое значение заносится в массив. Например:
$i=4
$_SESSION['z_txt[$i]']="Привет тебе, приют священный"
Значение $_SESSION['z_txt[4]'] эхом выдается верное.
2. но при этом стирается значение переменной $_SESSION['z_txt[3]'. Она становится пустой строкой. Соответственно, пятое заполнение массива стирает четвертую запись и т.п.
Пришлось использовать глобальную переменную для этого массива (соответственно отмечая его внутри функций), и с ним все работает нормально.
Но хотелось бы прибиться к одному стилю. Либо использовать сессию в качестве глобальн. переменных, либо опять вернуться к глобальным переменным. Смесь в данном случае только запутает дело. | |
|
|
|
|
|
|
|
для: Lisnerpa
(23.09.2005 в 18:35)
| | Без кода тут ошибку не найти. Выложите лучше код всего цикла, ведь, насколько я понимаю, занесение у вас через цикл. | |
|
|
|
|
|
|
|
для: tim_mironov
(23.09.2005 в 18:56)
| | Вот код функции.
function Zadanie_Input()
// Считать значения из файла задания в переменные сессии
{
global $z_t;
//открываем файл Задания для чтения
$zf = fopen ($_SESSION['Fil_Zad'],"r");
if(!$zf) //=== Eсли файл отсутствует
{
echo("Ошибка открытия файла Задания.");
return ""; //возвращ.значение ""
}
else
{
$_SESSION['z_ns'] = 0; //число строк задания
while(!feof($zf))
{
$l=fgets($zf); //считать строку
//=== Анализировать строки и заносить в переменные
if (substr($l,0,4) == "Тур:") // Тур
{
$_SESSION['z_num']=substr($l,4);
}
elseif (substr($l,0,6) == "Автор:") // Автор
{
$_SESSION['z_awt']=substr($l,6);
}
elseif (substr($l,0,9) == "Название:") // Название
{
$_SESSION['z_naim']=substr($l,9);
}
elseif (substr($l,0,5) == "Дата:") // Дата
{
$_SESSION['z_data']=substr($l,5);
}
else // Строка задания
{
$_SESSION['z_ns'] = $_SESSION['z_ns'] + 1;
$z_t[$_SESSION['z_ns']]=$l;
$i=$_SESSION['z_ns'];
$_SESSION['z_txt[$i]'] =$l;
echo '-1'.$_SESSION['z_txt[$i-1]']."<br>";
echo $i.$_SESSION['z_txt[$i]']."<br>";
}
}
fclose($zf); //закрыть файл
return $_SESSION['z_num']; //возвращ.№ задания
}
}
от него на форме получается:
-1
1Земля отцов красивей год от году.
-1
2Гну спину в дождь, в ночи и поутру.
-1
3Меня давно не видно небосводу,
-1
4Я, так его не видя, и умру.
-1
Как видите, предыдущие записи в массиве стираются.
Если вывести значения массива z_t[] - все будет в целости и сохранности. | |
|
|
|
|
|
|
|
для: Lisnerpa
(23.09.2005 в 18:35)
| | Откуда берётся z_txt и что это за массив, каковы его значения? Может удобнее исползовать двумерный массив
<?php
$_SESSION['z_txt'][4];
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(23.09.2005 в 22:59)
| | Еще одно замечание в том, что здесь как в C# нумерация массива начинается с 0, а не с 1. В догрузку сообщаю, что не плохо было бы приложить весь текст, чтобы мы видели что исчезло. | |
|
|
|
|
|
|
|
для: cheops
(23.09.2005 в 22:59)
| | Еще одно замечание в том, что здесь как в C# нумерация массива начинается с 0, а не с 1. В догрузку сообщаю, что не плохо было бы приложить весь текст, чтобы мы видели что исчезло.
З.Ы. Прикладываю файл с учебником. | |
|
|
|
|
|
|
|
для: cheops
(23.09.2005 в 22:59)
| | Еще одно замечание в том, что здесь как в C# нумерация массива начинается с 0, а не с 1. В догрузку сообщаю, что не плохо было бы приложить весь текст, чтобы мы видели что исчезло.
З.Ы. Прикладываю файл с учебником. | |
|
|
|
|
|
|
|
для: cheops
(23.09.2005 в 22:59)
| | Еще одно замечание в том, что здесь как в C# нумерация массива начинается с 0, а не с 1. В догрузку сообщаю, что не плохо было бы приложить весь текст, чтобы мы видели что исчезло. | |
|
|
|
|
|
|
|
для: Lisnerpa
(23.09.2005 в 18:35)
| | Есть ещё один вариант в своём коде, выложи во многих местах print_r($_SESSION); Затем посмотри, что куда и зачем, где проподает, что бы разбираться с тем учатком кода. | |
|
|
|