Инвертировать матричные числа - цикл - PullRequest
4 голосов
/ 08 октября 2011

Во-первых, у меня есть эти значения.

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

, и мне нужен выход с тремя массивами, подобными этим:

$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
    );
}

Любая помощь?спасибо

Я думаю, что это изображение помогает понять проблему:

enter image description here

1 Ответ

1 голос
/ 08 октября 2011

Во-первых, использование 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];
        }
    }
}     

Я уверен, что есть гораздо более эффективный способ сделать это, но это начало для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...