Почему мой включенный файл выполняется снова, когда isset(POST['submit'])?
Мой включенный файл (include.php) такой:
<?php
$myarray=(a,b,c);
shuffle($myarray);
?>
Мой основной файл php это:
include('include.php');
if isset($_POST['submit_button']){
echo "Button was clicked";
echo $myarray;
}
else {
echo "Not clicked.";
echo $myarray;
}
?>
<form method='POST'><input type='submit' name='submit_button'></form>
Почему элементы $myarray
отображается в другом порядке после нажатия кнопки? Разве это не тасуется только один раз?
Как я могу предотвратить выполнение шаффла более одного раза? (чтобы я мог отображать элементы myarray в том же порядке, до и после нажатия кнопки)
2 ответа
Ваши PHP-файлы интерпретируются при каждом запросе. Как у вас сейчас, в вашей системе нет памяти, поэтому ваши файлы не могут "запомнить", что массив уже перетасован. Кроме того, если вы перетасуете массив один раз, а затем загрузите страницу во второй раз, и вам не удастся перетасовать ее, массив будет (a,b,c), поскольку переменная инициализируется как (a, b, c) и никогда не тасуется.
Чтобы делать то, что вы хотите, если я правильно понимаю, вы можете использовать сеансы.
$myarray=(a,b,c);
if (!isset($_SESSION['shuffled'])) {
shuffle($myarray);
$_SESSION['shuffled'] = $myarray;
} else {
$myarray = $_SESSION['shuffled'];
}
Это происходит потому, что каждый раз, когда вы загружаете страницу, включается файл, который также перетасовывает массив снова.
Попробуйте использовать serialize()
а затем поместите массив в нужном вам порядке. Получить его с помощью unserialize()