PHP 2D数组for循环



我想通过循环创建2d数组。数组应该像这样:

[00,01,02]
[10,11,12]
[20,21,22]

那么我必须在这个数组的主对角线中搜索

我知道我需要两个for循环,但是我不知道怎么写。我试过这样的方法。我知道代码不起作用。我不知道该怎么处理。

for ($i = 0; $i <= $size; $i++){   
$matrix = [];
for ($j = 0; $j <= $size; $j++){
$matrix[i][j] = array ($i;$j);
}
}
对于我的第二个任务,我认为我应该使用foreach和condition。像这样的?
foreach ($matrix as $key) {
if ($i==$j) {
...
}
}

谢谢!

问题是您将$matrix = [];中每次迭代的$矩阵重置为空数组。你的语法(array ($i;$j))也不正确。在循环遍历数组之前,需要进行初始化。下面的代码将生成您想要的数组。

<?php
// Generate array
$lastNumber = 2;
$matrix = [];
for ($i = 0; $i <= $lastNumber; $i++) {
for ($j = 0; $j <= $lastNumber; $j++) {
$matrix[$i][$j] = $i.$j;
}
}

你不需要使用if条件来遍历对角线。你知道确切的大小和/或位置。

// Loop through diagonal
for ($pos = 0; $pos <= $lastNumber; $pos++) {
// do something with $matrix[$pos][$pos]
}

如果我没理解错的话…试试这样写

$array = [];
$j = 0;
for($i = 0; $i < 100; $i++) {
if($i % 10 == 0) {
$j++;
}    
$array[$j][] = $i;
}
print("<pre>".print_r($array,true)."</pre>");

将创建:

Array
(
[1] => Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 3
[4] => 4
[5] => 5
[6] => 6
[7] => 7
[8] => 8
[9] => 9
)
[2] => Array
(
[0] => 10
[1] => 11
[2] => 12
[3] => 13
[4] => 14
[5] => 15
[6] => 16
[7] => 17
[8] => 18
[9] => 19
)
[3] => Array
(
[0] => 20
[1] => 21
[2] => 22
[3] => 23
[4] => 24
[5] => 25
[6] => 26
[7] => 27
[8] => 28
[9] => 29
)
[4] => Array
(
[0] => 30
[1] => 31
[2] => 32
[3] => 33
[4] => 34
[5] => 35
[6] => 36
[7] => 37
[8] => 38
[9] => 39
)
[5] => Array
(
[0] => 40
[1] => 41
[2] => 42
[3] => 43
[4] => 44
[5] => 45
[6] => 46
[7] => 47
[8] => 48
[9] => 49
)
[6] => Array
(
[0] => 50
[1] => 51
[2] => 52
[3] => 53
[4] => 54
[5] => 55
[6] => 56
[7] => 57
[8] => 58
[9] => 59
)
[7] => Array
(
[0] => 60
[1] => 61
[2] => 62
[3] => 63
[4] => 64
[5] => 65
[6] => 66
[7] => 67
[8] => 68
[9] => 69
)
[8] => Array
(
[0] => 70
[1] => 71
[2] => 72
[3] => 73
[4] => 74
[5] => 75
[6] => 76
[7] => 77
[8] => 78
[9] => 79
)
[9] => Array
(
[0] => 80
[1] => 81
[2] => 82
[3] => 83
[4] => 84
[5] => 85
[6] => 86
[7] => 87
[8] => 88
[9] => 89
)
[10] => Array
(
[0] => 90
[1] => 91
[2] => 92
[3] => 93
[4] => 94
[5] => 95
[6] => 96
[7] => 97
[8] => 98
[9] => 99
)
)

然后循环,像

$j = 0;
$finalArray = [];
foreach($array as $arr) {
$finalArray[] = $arr[$j];
$j++;
}
print("<pre>".print_r($finalArray,true)."</pre>");

你会看到这个:

Array
(
[0] => 0
[1] => 11
[2] => 22
[3] => 33
[4] => 44
[5] => 55
[6] => 66
[7] => 77
[8] => 88
[9] => 99
)

最新更新