Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 12.07.2019, 19:42
Аватар для Dark_Delphin
Кандидат Javascript-наук
Отправить личное сообщение для Dark_Delphin Посмотреть профиль Найти все сообщения от Dark_Delphin
 
Регистрация: 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 (permalink)  
Старый 12.07.2019, 19:53
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

array_chunk - разбивает массив на части, то есть если массив имеет 16 значений, значит будет массив с имеющий 4 вложения по четыре элемента. array_map - обходит его соединяя каждое вложение в строку, внешний implode соединит все в одну строку - таблицу, а 4 х 4 = 16.

Можете сразу формировать таблицу (начинать с '<table><tr>' до цикла), не помещая генерируемые числа в массив, а формировать из них строку ('<td>' . $rand . '</td>'), добавляя ее к строке, и деля итератор по модулю 4, добавлять к ней '</tr><tr>'. По окончании цикла закрыть строку - '</tr></table>'.
Ответить с цитированием
  #13 (permalink)  
Старый 12.07.2019, 19:58
Аватар для Dark_Delphin
Кандидат Javascript-наук
Отправить личное сообщение для Dark_Delphin Посмотреть профиль Найти все сообщения от Dark_Delphin
 
Регистрация: 25.07.2013
Сообщений: 129

Пытаюсь слепить до кучи, все равно не получается, не могу понять до конца, я даже не предпологал, что это так делается
Ответить с цитированием
  #14 (permalink)  
Старый 12.07.2019, 20:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Dark_Delphin,
может сделать всё на клиенте?
Ответить с цитированием
  #15 (permalink)  
Старый 12.07.2019, 20:51
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

создание таблицы из массива уникальных чисел
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.
Ответить с цитированием
  #16 (permalink)  
Старый 12.07.2019, 21:01
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Dark_Delphin, если как ранее писалось - получить не повторяющиеся, то только так:

$a = range(1, 5000);
shuffle($a); //перемешанный массив (сохранить в сессии), срезы которого по 16 элементов, со смещением 16, можно выводить по каждому запросу клиента.


Либо формируете массив - $a = range(1, 5000);, а затем выбираете случайные значения из него - array_rand($a, 16).

В этом случае действительно ни разу гарантированно не будет повторений. А построение таблицы, так это пустяк, потренируйтесь на простом примере.
Ответить с цитированием
  #17 (permalink)  
Старый 13.07.2019, 00:05
Аватар для Dark_Delphin
Кандидат Javascript-наук
Отправить личное сообщение для Dark_Delphin Посмотреть профиль Найти все сообщения от Dark_Delphin
 
Регистрация: 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>
Харош, отлично, бро. У меня не зашло, чтот на яве, а с пхп как-то сложно.
Ответить с цитированием
  #18 (permalink)  
Старый 13.07.2019, 00:10
Аватар для Dark_Delphin
Кандидат Javascript-наук
Отправить личное сообщение для Dark_Delphin Посмотреть профиль Найти все сообщения от Dark_Delphin
 
Регистрация: 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
       
    }
?>
Ответить с цитированием
  #19 (permalink)  
Старый 13.07.2019, 00:15
Аватар для Dark_Delphin
Кандидат Javascript-наук
Отправить личное сообщение для Dark_Delphin Посмотреть профиль Найти все сообщения от Dark_Delphin
 
Регистрация: 25.07.2013
Сообщений: 129

А можно сделать, что-бы изначально чисел не было, как открываешь страницу с кодом рандомных чисел?
Ответить с цитированием
  #20 (permalink)  
Старый 13.07.2019, 00:29
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рандомные неповторяющиеся числа raler jQuery 10 03.08.2014 16:32
Решение проблемы кодировок для AJAX и PHP без iconv (cp1251 в AJAX) Serge Ageyev AJAX и COMET 10 24.04.2013 20:48
Связь между страницами с javascript и php ... и обратно okrip25 AJAX и COMET 7 09.01.2012 14:43
Запуск выполнения PHP при нажатие на кнопку??? Abibas220 Общие вопросы Javascript 1 05.01.2011 12:05
Как передать картинку из javascript в php KIVagant AJAX и COMET 3 12.05.2010 11:54