【问题标题】:Invert matrix numbers - loop反转矩阵数字 - 循环
【发布时间】:2011-12-03 15:27:49
【问题描述】:

首先,我有这些价值观。

$Arr1 = array(1/1, 1/2, 3/1);
$Arr2 = array(1/1, 4/1);
$Arr3 = array(1/1);

我需要一个带有 3 个这样的数组的输出:

$a1 = array (1/1, 1/2, 3/1);
$a2 = array (2/1, 1/1, 4/1);
$a3 = array (1/3, 1/4, 1,1);

我正在尝试的是:

for ($i=0; $i<count($Arr1); $i++) {
    ${"a".$i} = array(
        //here, the number of array elements depends to the length of $a1
    );
}

有什么帮助吗?谢谢

我认为这张图片有助于理解问题:

【问题讨论】:

  • 您使用什么样的函数/转换来获取输出数组? $a 是如何映射到 $a1 的?
  • @bryan 我现在没有任何输出。我无法制作的循环在这种情况下应该产生 4 个数组。
  • 我明白这一点,但我想问你如何计算新数组的值?比如……公式是什么?例如“将 $a 中的每个元素乘以 3 并加 6”或类似的东西。你明白我的问题吗?给定 $a,你如何产生 $a1?
  • 没有计算。例如,$Arr4 对应于 $a4。
  • 好吧,这很清楚,但是这些负值是如何出现的,我想这就是 Brian 的问题?

标签: php arrays for-loop


【解决方案1】:

首先,使用 2D 数组会让您的生活更轻松。

首先,像这样初始化你的值:

$matrix_size = 3;
$matrix = array();
for($i = 0; $i < $matrix_size; $i++){
    $matrix[$i] = array_fill(0, $matrix_size, null);
}

$matrix[0][0] = 1/1; 
$matrix[0][1] = 1/2; 
$matrix[0][2] = 3/1; 

$matrix[1][1] = 1/1; 
$matrix[1][2] = 4/1; 

$matrix[2][2] = 1/1; 

然后你可以像这样运行一个循环:

foreach($x = 0; $x < $matrix_size; $x++){
    foreach($y = 0; $y < $matrix_size; $y++){
        if(is_null($matrix[y][x]) && !is_null($matrix[x][y])){
            $matrix[y][x] = 1/$matrix[x][y];
        }
    }
}     

我确信有一种更有效的方法可以做到这一点,但这是您探索的开始。

【讨论】:

  • 抱歉我的问题中的编辑,但我认为现在对所有人来说都更清楚了。
猜你喜欢
  • 1970-01-01
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-16
  • 2010-11-12
相关资源
最近更新 更多