2010-10-13 3 views
0

Есть ли способ передать массив между двумя страницами без изменений?Передача большого массива между страницами в PHP

Я строю огромный массив, и его здание использует массы memmory. Я хотел бы иметь возможность хранить массив целыми, а затем повторно получать его с другой страницы?

Если я использую $x = print_r($array,true); и записываю его в файл, как я могу его перестроить в массив или вообще есть лучший способ.

+0

Насколько велик ваш массив? В цифрах. И вы уверены, что вам нужен целый массив на следующей странице? –

ответ

2

Вы можете хранить его в сессии (не уверен, насколько он большой) .. если вы хотите записать в файл .. вы можете сделать что-то вроде этого:

$fp = fopen("file.php" , "w"); 
fwrite($fp , "<? \$array = ".var_export($array,true).";"); 
fclose($fp); 

, а затем просто включить этот файл как загружается нормальный файл на следующей странице.

+0

Функция 'serialize' лучше в такой ситуации :) – Sarfraz

+0

@Sarfraz .. нужно удержать целевую аудиторию :) –

3

Вы можете легко сохранить эти данные в сеансе. Как это

$_SESSION['serialized_data'] = urlencode(serialize($your_data)); 

, а затем после этого на вашей второй странице:

$your_data = unserialize(urldecode($_SESSION[$serialized_data])); 

Я использую этот подход довольно часто.

+0

Если найти более подходящую запись данных в файл, вы можете использовать аналогичный подход сериализации/неэтериализации. – Michael

+0

Обратите внимание, что если вы используете ссылки на объекты, они не могут быть сериализованы. – Michael

+0

Я не уверен, что это помогает кому-то еще, но это работает для моей ситуации: я передаю данные на другую страницу, используя POST. Я также использую ajax, но, очевидно, вам это не нужно. Использование $ dataToPost = urlencode (serialize ($ your_data)); отлично работает для меня. – rmooney

0

Передача огромного количества данных между страницами обычно не является отличным решением, но могут быть исключения - что вы пытаетесь выполнить здесь?

Я бы не предложил использовать переменные сеанса. Во многих случаях, если данные, по-видимому, большие, чтобы проходить между страницами, это так. В таких случаях может быть полезно использовать базу данных для получения информации и доступ к базе данных с каждой страницы.

0

Самый простой способ - использовать переменную сеанса.

$_SESSION['big_array']=$big_array; 

Это не было бы особенно желательно, если это высокий сайт тома (как массивы будут сидеть в памяти, пока не истечет время сессии), но должно быть хорошо в противном случае.

Вы хотите, чтобы убедиться, что вы начали сессию перед которой, в случае необходимости, может быть сделано с помощью:

session_start();