如何在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
正如你可以在这个在线演示中测试的那样