12.07.2019, 19:42
|
|
Кандидат Javascript-наук
|
|
Регистрация: 25.07.2013
Сообщений: 129
|
|
Сообщение от laimas
|
echo '<table><tr>' . implode('</tr><tr>', array_map(function($v) {
return '<td>' . implode('</td><td>', $v) . '</td>';
}, array_chunk($used, 4))) . '</tr></table>';
|
Здесь, чтото не так, оно выводит кучу чисел теперь, а не 16 шт.
|
|
12.07.2019, 19:53
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
array_chunk - разбивает массив на части, то есть если массив имеет 16 значений, значит будет массив с имеющий 4 вложения по четыре элемента. array_map - обходит его соединяя каждое вложение в строку, внешний implode соединит все в одну строку - таблицу, а 4 х 4 = 16.
Можете сразу формировать таблицу (начинать с '<table><tr>' до цикла), не помещая генерируемые числа в массив, а формировать из них строку ('<td>' . $rand . '</td>'), добавляя ее к строке, и деля итератор по модулю 4, добавлять к ней '</tr><tr>'. По окончании цикла закрыть строку - '</tr></table>'.
|
|
12.07.2019, 19:58
|
|
Кандидат Javascript-наук
|
|
Регистрация: 25.07.2013
Сообщений: 129
|
|
Пытаюсь слепить до кучи, все равно не получается, не могу понять до конца, я даже не предпологал, что это так делается
|
|
12.07.2019, 20:45
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,133
|
|
Dark_Delphin,
может сделать всё на клиенте?
|
|
12.07.2019, 20:51
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,133
|
|
создание таблицы из массива уникальных чисел
Dark_Delphin,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
td {
text-align: center;
border: solid 1px #0000FF;
}
table {
border-collapse: collapse;
border: 1px solid #0000FF;
width: 300px;
}
</style>
</head>
<body>
<table></table>
<script>
Array.prototype.shuffle = function (min, max) {
min = min || 0;
max = ++max || this.length;
var len = max - min;
max = len - this.length;
this.length = len;
for (var a = this.length - 1; 0 <= a; a--) {
if (a < max) break;
var b = Math.floor(Math.random() * a),
c = void 0 === this[b] ? (b + min) : this[b];
this[b] = void 0 === this[a] ? (a + min) : this[a];
this[a] = c
}
this.reverse();
this.length -= max;
return this
};
var arr = Array(16).shuffle(1, 5000);
var table = document.querySelector("table");
var length = 4, tr;
arr.forEach(function (number, indx) {
if (indx % length == 0) tr = table.insertRow(indx / length | 0);
var td = tr.insertCell(indx % length);
td.innerHTML = number
});
</script>
</body>
</html>
Последний раз редактировалось рони, 12.07.2019 в 21:04.
|
|
12.07.2019, 21:01
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Dark_Delphin, если как ранее писалось - получить не повторяющиеся, то только так:
$a = range(1, 5000);
shuffle($a); //перемешанный массив (сохранить в сессии), срезы которого по 16 элементов, со смещением 16, можно выводить по каждому запросу клиента.
Либо формируете массив - $a = range(1, 5000);, а затем выбираете случайные значения из него - array_rand($a, 16).
В этом случае действительно ни разу гарантированно не будет повторений. А построение таблицы, так это пустяк, потренируйтесь на простом примере.
|
|
13.07.2019, 00:05
|
|
Кандидат Javascript-наук
|
|
Регистрация: 25.07.2013
Сообщений: 129
|
|
Сообщение от рони
|
Dark_Delphin,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
td {
text-align: center;
border: solid 1px #0000FF;
}
table {
border-collapse: collapse;
border: 1px solid #0000FF;
width: 300px;
}
</style>
</head>
<body>
<table></table>
<script>
Array.prototype.shuffle = function (min, max) {
min = min || 0;
max = ++max || this.length;
var len = max - min;
max = len - this.length;
this.length = len;
for (var a = this.length - 1; 0 <= a; a--) {
if (a < max) break;
var b = Math.floor(Math.random() * a),
c = void 0 === this[b] ? (b + min) : this[b];
this[b] = void 0 === this[a] ? (a + min) : this[a];
this[a] = c
}
this.reverse();
this.length -= max;
return this
};
var arr = Array(16).shuffle(1, 5000);
var table = document.querySelector("table");
var length = 4, tr;
arr.forEach(function (number, indx) {
if (indx % length == 0) tr = table.insertRow(indx / length | 0);
var td = tr.insertCell(indx % length);
td.innerHTML = number
});
</script>
</body>
</html>
|
Харош, отлично, бро. У меня не зашло, чтот на яве, а с пхп как-то сложно.
|
|
13.07.2019, 00:10
|
|
Кандидат Javascript-наук
|
|
Регистрация: 25.07.2013
Сообщений: 129
|
|
Конструкция жесткая у меня))
<?php
# Если кнопка нажата
if( isset( $_POST['knopka'] ) )
{
# Тут код який виполянеться
?>
<style type="text/css">
td {
text-align: center;
border: solid 1px #0000FF;
}
table {
border-collapse: collapse;
border: 1px solid #0000FF;
width: 300px;
}
</style>
</head>
<body>
<table></table>
<script>
Array.prototype.shuffle = function (min, max) {
min = min || 0;
max = ++max || this.length;
var len = max - min;
max = len - this.length;
this.length = len;
for (var a = this.length - 1; 0 <= a; a--) {
if (a < max) break;
var b = Math.floor(Math.random() * a),
c = void 0 === this[b] ? (b + min) : this[b];
this[b] = void 0 === this[a] ? (a + min) : this[a];
this[a] = c
}
this.reverse();
this.length -= max;
return this
};
var arr = Array(16).shuffle(1, 5000);
var table = document.querySelector("table");
var length = 4, tr;
arr.forEach(function (number, indx) {
if (indx % length == 0) tr = table.insertRow(indx / length | 0);
var td = tr.insertCell(indx % length);
td.innerHTML = number
});
</script>
</body>
<?php
}
?>
|
|
13.07.2019, 00:15
|
|
Кандидат Javascript-наук
|
|
Регистрация: 25.07.2013
Сообщений: 129
|
|
А можно сделать, что-бы изначально чисел не было, как открываешь страницу с кодом рандомных чисел?
|
|
13.07.2019, 00:29
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,133
|
|
Dark_Delphin,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
td {
text-align: center;
border: solid 1px #0000FF;
}
table {
border-collapse: collapse;
border: 1px solid #0000FF;
width: 300px;
}
</style>
</head>
<body>
<table class="num"></table>
<script>
Array.prototype.shuffle = function (min, max) {
min = min || 0;
max = ++max || this.length;
var len = max - min;
max = len - this.length;
this.length = len;
for (var a = this.length - 1; 0 <= a; a--) {
if (a < max) break;
var b = Math.floor(Math.random() * a),
c = void 0 === this[b] ? (b + min) : this[b];
this[b] = void 0 === this[a] ? (a + min) : this[a];
this[a] = c
}
this.reverse();
this.length -= max;
return this
};
function addNumber()
{
var arr = Array(16).shuffle(1, 5000);
var table = document.querySelector(".num");
table.innerHTML = "";
var length = 4, tr;
arr.forEach(function (number, indx) {
if (indx % length == 0) tr = table.insertRow(indx / length | 0);
var td = tr.insertCell(indx % length);
td.innerHTML = number
});
}
</script>
<input name="" type="button" value="add Number To Table" onclick="addNumber()">
</body>
</html>
|
|
|
|