#php #arrays #ajax
#php #массивы #ajax
Вопрос:
У меня есть функция, которая на данный момент просто генерирует случайное число при нажатии кнопки. В настоящее время он просто переопределяет текущее сгенерированное число.
<!DOCTYPE html>
<html>
<head>
<title>Number Generator</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
</head>
<?php
// $random_number_array = [];
function generatedNumbers(){
$random_number_array = range(0, 100);
shuffle($random_number_array );
$random_number_array = array_slice($random_number_array ,0,10);
foreach ($random_number_array as $key => $value) {
print_r($value);
}
}
if (isset($_GET['run'])) {
generatedNumbers();
}
;
?>
<body>
<a href='index.php?run=true'>Generate</a>
<p></p>
</body>
</html>
Я хотел бы сгенерировать в новой строке числа в виде массива, поэтому за клик генерируйте новую строку с новым набором чисел
Комментарии:
1. Сохраните числа в массиве session / GET, и вы можете использовать
random_int / rand
для генерации случайных чисел.2. Вам придется использовать jquery ajax для вызова вашей функции number при нажатии и использовать jquery append для добавления ее в dom. Вам нужно обновить свой вопрос с помощью javascript, который вы пробовали, если вам нужна помощь с кодом.
Ответ №1:
Решение 1:
Если вы хотите достичь желаемого результата, используя только PHP
, вы можете следовать этому примеру:
HTML:
<a href='index.php?run=true'>Generate</a>
PHP:
<?php
session_start(); // need to use session_start to store array in session.
function generatedNumbers(){
$random_number_array = range(0, 100);
shuffle($random_number_array);
$random_number_array = array_slice($random_number_array,0,10);
foreach ($random_number_array as $key => $value) {
$myArray[] = $value; // store values in array
}
if(isset($_SESSION['data']) amp;amp; count($_SESSION['data']) > 0){
$myArray = array_merge($_SESSION['data'],$myArray); // merge new and old array if exist in session.
}
$_SESSION['data'] = $myArray; // reset the value in session.
echo "<pre>";
print_r($myArray);
}
if (isset($_GET['run'])) {
generatedNumbers();
}
?>
Некоторое объяснение:
В PHP
вы можете получить желаемый результат, используя session
, вы можете сохранить все значения в массив, который затем вы можете использовать $_SESSION
для следующего результата, в последнем вы можете объединить старые и новые данные вместе, используя array_merge()
Решение 2:
Вы также можете получить желаемый результат с помощью jQuery / Ajax:
Интерфейс:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<a href='javascript:void(0);' id="generate">Generate</a>
<div id="result"></div>
<script type="text/javascript">
$(document).ready(function(){
$("#generate").click(function(){
$.ajax({
url: "index2.php",
type: "GET",
data: "run=1",
dataType: "html", // Has to be false to be able to return response
success: function(response) {
$("#result").html(response);
}
}); // JQUERY Native Ajax End
});
});
</script>
Теперь вам нужно вызвать, index2.php
используя ajax, ваш index2.php
следующий код:
index2.php:
<?php
session_start(); // need to use session_start to store array in session.
function generatedNumbers(){
$random_number_array = range(0, 100);
shuffle($random_number_array);
$random_number_array = array_slice($random_number_array,0,10);
foreach ($random_number_array as $key => $value) {
$myArray[] = $value; // store values in array
}
if(isset($_SESSION['data']) amp;amp; count($_SESSION['data']) > 0){
$myArray = array_merge($_SESSION['data'],$myArray); // merge new and old array if exist in session.
}
$_SESSION['data'] = $myArray; // reset the value in session.
echo "<pre>";
print_r($_SESSION['data']);
}
if (isset($_GET['run'])) {
generatedNumbers();
}
?>
Примечание сбоку: index.php и index2.php должно быть в том же каталоге.