【问题标题】:Changing the size of a two-dimensional array based on user input根据用户输入更改二维数组的大小
【发布时间】:2017-07-14 05:52:29
【问题描述】:

是否可以根据用户输入生成二维数组?

比如我目前有一个大小为2x2的数组,我写的如下:

<?php
    $matrix = array(
        array($a, $b),
        array($c, $d)
    );
?>

如您所见,这个数组充满了变量。我的问题是,如果我有一个文本输入,用户可以在其中设置所需数组的参数,即

<p>The size of my Matrix will be:</p>
<p>Columns:<input type='text' name='columns'> Rows:<input type='text' name='rows'></p>
<input type='submit' value='Compile my Matrices!' name='submit'>  

因此,如果用户输入了 3 列和 3 行 (3x3),我将如何创建一个与 2x2 示例格式相同的数组,以便动态输出数组为:

<?php
    $matrix = array(
        array($a, $b, $c),
        array($d, $e, $f),
        array($g, $h, $i)
    );
?>

是否也可以在生成时用这些变量填充数组?

EDIT - 变量将在别处声明,即。

<?php
    $a = rand($min, $max);
    $b = rand($min, $max);
    $c = rand($min, $max);
    $d = rand($min, $max); etc etc
?>

其中 $min 和 $max 由其他参数设置。

EDIT2 - 经过一番折腾,我设法创建了一个矩阵,它可以遵循我需要的正确格式:

for ($i = 0; $i < 5; $i++) {
    for ($j=0; $j < 5; $j++){
         $matrix[$i][$j] = ('a' . $counter);
         $counter++;
         //echo $matrix[$i][$j] . ' ';
    }
    //echo '<br>';
}

这会产生一个格式数组:

a0 a1 a2 a3 a4
a5 a6 a7 a8 a9
a10 a11 a12 a13 a14
a15 a16 a17 a18 a19
a20 a21 a22 a23 a24 

这很接近我的需要。

【问题讨论】:

  • 你从哪里得到变量?
  • 请看编辑,谢谢

标签: php arrays multidimensional-array dynamic


【解决方案1】:

假设您知道如何将 html 表单中的数据 POST 回您的服务器,处理请求的 php 代码可能如下所示。您的问题似乎归结为如何编写动态大小的二维数组(矩阵)。

创建一个嵌套的 for 循环。内部 for 循环通过将项目附加到每一行 ($this_row) 来构建每一行:$this_row[] = rand($min, $max);,然后将每个新行附加到 $matrix 数组。

请记住,rand 函数和$min$max 变量未在以下示例中定义。您需要定义它们。

<?php

    $num_cols = filter_input(INPUT_POST, 'columns', FILTER_VALIDATE_INT);
    $num_rows = filter_input(INPUT_POST, 'rows', FILTER_VALIDATE_INT);

    $matrix = array();

    for ( $j = 0; $j < $num_rows; $j ++ ) {
        $this_row = array()
        for ( $k = 0; $k < $num_cols; $k ++ ) {
            $this_row[] = rand($min, $max);
        }
        $matrix[] = $this_row;
    }

    //now you have your matrix

?>

【讨论】:

  • 也许是一些文字或解释,所以它不仅仅是一个代码块。
猜你喜欢
  • 1970-01-01
  • 2013-10-03
  • 2015-04-25
  • 1970-01-01
  • 2011-01-14
  • 2014-09-13
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
相关资源
最近更新 更多