【问题标题】:How to create random table grid with PHP? [closed]如何使用 PHP 创建随机表格网格? [关闭]
【发布时间】:2016-01-22 10:05:52
【问题描述】:

我是 PHP 新手。我需要在表中看到池中的随机数字。 我使用 for 循环创建但无法填充所有随机数。 不幸的是,现在所有单元格都显示相同的数字。

  <?php
    $size = 3;
    $no = array(0,1,2,3,4,5,6,7,8,9,2,4,6,8);
    ?>
    <table>
    <?php 
    $number[] = $no[array_rand($no)];
        for ($i=0; $i < $size; $i++){
            foreach ($number as $cell)
        { ?><tr><?php
            for ($b=0; $b < $size ;$b++){
             foreach ($number as $cell){
        echo '<td>'.$cell.'</td>';
          }
         }
         }
         ?></tr><?php
        }
        ?>
        </table>

【问题讨论】:

  • 要么 php 配置不正确,要么你有一个语法错误导致处理失败。但是,我们无法确定您是否不显示任何代码。
  • 您只是随机化一次,在打印单元格时将其排列在里面。而太多的foreach 只需要循环
  • 我不知道如何在不使用 array_rand 和 foreach 的情况下从池中选择随机数。

标签: php html loops random html-table


【解决方案1】:

一种方法是在需要打印单个单元格时通过array_rand 选择一个随机密钥,因此只需将其放在那里:

<?php $size = 3; $no = array(0,1,2,3,4,5,6,7,8,9,2,4,6,8); ?>
<table border="1">
<?php for ($i = 0; $i < $size; $i++){ ?>
    <tr>
    <?php for ($b = 0; $b < $size ;$b++) { ?>
        <td><?php echo $no[array_rand($no)]; ?></td>
    <?php } ?>
    </tr>
<?php } ?>
</table>

Sample Output

或者另一种方法是在打印内循环时选择 N 个键:

<?php 
$size = 3; 
$no = array(0,1,2,3,4,5,6,7,8,9,2,4,6,8);
?>
<table>
<?php for($i = 0; $i < $size; $i++) { ?>
    <tr>
    <?php foreach(array_rand($no, $size) as $keys) { ?>
        <td><?php echo $no[$keys]; ?></td>
    <?php } ?>
    </tr>
<?php } ?>
</table>

Sample Output

另一种奇怪的方式:(预加载的随机键:p)

<?php 
$size = 3; 
$no = array(0,1,2,3,4,5,6,7,8,9,2,4,6,8);
$rands = array_map(function() use ($size, $no){
    return array_rand($no, $size);
}, array_fill(0, $size, array()));

?>
<table border="1">
<?php foreach($rands as $row){ ?>
    <tr><?php foreach($row as $c) { ?>
        <td><?php echo $no[$c]; ?></td>
    <?php } ?></tr>
<?php } ?>
</table>

Sample Output

【讨论】:

    【解决方案2】:

    我的方法:

    <?php
    $size = 3;
    $number = array(0,1,2,3,4,5,6,7,8,9,2,4,6,8);
    shuffle($number);
    $number_loop = 0;
    echo '<table>';
    
    for($i = 0; $i < $size; $i ++){
        echo '<tr>';
        for($j = 0; $j < $size; $j ++){
            echo '<td>' . $number[$number_loop] . '<td>';
            $number_loop ++;
        }
        echo '</tr>';
    }
    echo '</table>';
    ?>
    

    看起来你不想重复数组中的数字,所以我就是这样做的

    演示:http://codepad.viper-7.com/65qAhA

    【讨论】:

    • 在这种情况下,号码重复不是问题。
    • 在这种情况下,将 $number[$number_loop] 替换为 $number[array_rand($number)] 并移除计数器并随机播放
    【解决方案3】:
    $cells = 10;
    $rows = Mathf.randomint(1,10)
    cell.ctable(cells,rows,name);
    $return 0
    

    这应该做的朋友,享受。 ;^)

    【讨论】:

    • 这是 JS 吗?我试图只用 html+css+php 来解决这个问题
    猜你喜欢
    • 2015-07-07
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 2022-12-17
    • 2012-05-10
    • 2019-08-14
    • 2013-03-06
    • 1970-01-01
    相关资源
    最近更新 更多