如何在PHP中声明100x100矩阵



如何在PHP中声明一个有100行和100列的矩阵?

以下是我已经知道的:

我知道如何为3x3:做这件事

$matrix=array(
array(1,2,3),
array(4,5,6),
array(7,8,9)  
);

或者:

$matrix=[
[1,2,3],
[4,5,6],
[7,8,9]
];

然后我找到了一种将元素添加到一维数组中的方法:

$t7=array("white","blue");
array_push($t7,"green","orange");

谢谢。

您可以使用几个for循环来完成,这只对5 x 5矩阵执行,但只需更改高度和宽度即可使其成为您喜欢的大小

$width = 5;
$height = 5;
$x = 1;
$matrix = [];
for( $i=0; $i < $width; $i++) {
for( $j=0; $j < $height; $j++) {
$matrix[$i][] = $x++;
}
}
print_r($matrix);

结果

Array
(
[0] => Array ( [0] => 1,  [1] => 2,  [2] => 3,  [3] => 4,  [4] => 5 )
[1] => Array ( [0] => 6,  [1] => 7,  [2] => 8,  [3] => 9,  [4] => 10 )
[2] => Array ( [0] => 11, [1] => 12, [2] => 13, [3] => 14, [4] => 15 )
[3] => Array ( [0] => 16, [1] => 17, [2] => 18, [3] => 19, [4] => 20 )
[4] => Array ( [0] => 21, [1] => 22, [2] => 23, [3] => 24, [4] => 25 )
)

一如既往,有几个选项。我决定使用带有两个For循环的方法。使用限制器($limit(可以设置矩阵深度。

<?php
$matrix = [];
$limit = 3;
$counter = 1;
for ($i = 0; $i < $limit; $i++){
$arr = [];
for($j = 0; $j < $limit; $j++) {
$arr[] = $counter++;
}
$matrix[$i] = $arr;  
}
print_r($matrix);

输出:

Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
[2] => Array
(
[0] => 7
[1] => 8
[2] => 9
)
)

因为答案中已经有两个For循环:-(,所以我想使用while和PHP Range函数。但是For循环解决方案也是我的第一选择。

$y = 0;
$matrix = [];
$range = 3;
while($y < $range) {
$matrix[$y] = range($start = $start ?? 1, $start + ($range - 1));
$start += $range;
$y++;
}
print_r($matrix);
// ----
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
[2] => Array
(
[0] => 7
[1] => 8
[2] => 9
)
)

由于您试图定义一个"平方"矩阵,我们可以使用它来创建一个简单的循环,使用range来获得所需的数字:

<?php
$x = 5; // 100
$m = [];
for ($i = 0; $i < $x; $i++) {
$m[] = range($i * $x, $i * $x + $x - 1);
}
var_dump($m);

在这里,我们创建一个空数组,循环n次,从上一个值开始在原始数组上添加一个新数组,直到+ 1 $y

这将生成:

array(5) {
[0]=>
array(5) {
[0]=>
int(0)
[1]=>
int(1)
[2]=>
int(2)
[3]=>
int(3)
[4]=>
int(4)
}
[1]=>
array(5) {
[0]=>
int(5)
[1]=>
int(6)
[2]=>
int(7)
[3]=>
int(8)
[4]=>
int(9)
}
... and some more

正如你可以在这个在线演示中测试的那样

最新更新