根据用户输入更改二维数组的大小

时间:2017-02-23 16:18:27

标签: php arrays multidimensional-array dynamic

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

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

<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'>  

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

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

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

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

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

编辑 - 变量将在别处声明,即

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

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

EDIT2 - 稍微搞乱了之后,我设法创建了一个矩阵,它可以遵循我要求的正确格式:

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 

这会生成一个格式数组:

cout

接近我的需要。

1 个答案:

答案 0 :(得分:1)

假设您知道如何将数据从html表单发送回服务器,处理请求的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

?>