php3×3二维数组[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ],它的对角线值为(1,5,9)和(3,5,7),对角线相加和为1+5+9+3+7 = 25。然而在计算的时候要如何找到这些数字并相加呢?
一、3×3数组求对角线之和
1 2 3
[0][0] [0][1] [0][2]
4 5 6
[1][0] [1][1] [1][2]
7 8 9
[2][0] [2][1] [2][2]
通过规律发现,它们的坐标:[0][0]、[1][1]、[2][2]、[0][2]、[1][1]、[2][0] ,x+y正好能被2整除。即公式为:(i+j)%2==0,最后通过遍历数组,对坐标进行判断,就能得出结果。
示例代码:
<?php $arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; $sum = 0; for ($i = 0; $i < count($arr); $i++) { for ($j = 0; $j < count($arr[$i]); $j++) { if(($i+$j)%2 ==0){ $sum += $arr[$i][$j]; } } } echo '数组对角线和为:' . $sum;
// 数组对角线和为:25
二、3×3对角线之和(不去除相交数)
它的对角线值为(1,5,9)和(3,5,7),对角线相加和为1+5+9+3+5+7 = 30
<?php $arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]; $sum = 0; for ($i = 0; $i < count($arr); $i++) { for ($j = 0; $j < count($arr[$i]); $j++) { if ($i == $j) { $sum += ($arr[$i][$j] + $arr[$i][2-$i]); } } } echo '数组对角线和为:' . $sum;
// 数组对角线和为:30