Как правильно сделать расчеты с даннымии из двух двумерных динамических массивов?

phpshnov

Новичок
Всем доброго времени суток.
Имеются два заполненных массива типа $w1[$i][$j] и $w2[$i][$j], полученные через $_POST.
Количество элементов в массивах одинаково.
Нужно рассчитать значения массива w2 в соответствии с алгоритмом из этого кода:
Код:
   For I = 1 To Maxvalue - 1
        W2(I, 1) = 2 * W1(I, 1) - W2(I + 1, 2)
    Next I
Я попытался сделать так:
PHP:
$w3 = $w2;
foreach ($w1 as $w1key => $valuew1){
foreach ($valuew1 as $w1key2 => $valw1) {
foreach ($w2 as $w2key => $valuew2){
foreach ($valuew2 as $w2key2 => $valw2) {
$size = count($valuew1); // узнаем размеры массива
$size2 = count($valuew2);
$sizem = $size - 1;
$size2m = $size2 - 1;
$zero = 0;
$one = 1;
while($w1key2 <= $sizem  ) {
while($w2key2 <= $size2m) {
    $w3[$key1][$key2] = 2 * $w1[$zero][$w1key2] - $w1[$one][$w2key2 +1];
}}   
}}}}
Но не работает. Зацикливается. Без while тоже ничего не считает. Только начал изучать php. Прошу подсказать, каким образом сделать подсчет? Куда копать? Какие операторы использовать? Буду благодарен за любую подсказку.
 

AnrDaemon

Продвинутый новичок
Количество одинаково, а индексы?
Приведите пример исходных данных.

P.S.
Ваш код будет терять скорость в геометрической прогрессии при росте любого из четырёх массивов.
При том, что в задании стоит только обход одного массива.
 
Последнее редактирование:

phpshnov

Новичок
Эти два массива по существу две одинаковые таблицы, только значения в ячейках этих двух таблиц разные. Индексы у двух массивов одинаковые. Первая таблица получается через форму. Порядок действий таков: пользователь указывает период (например с 1910 по 1980( м возраст (например, с 1 по 5 лет). Формируется соответствующая таблица с динамическим количеством столбцов и строк и пустыми ячейками (инпутами) куда пользователь вводит данные значения "вес". Далее он нажимает на кнопку submit и данные сохраняются в массив типа $w1[$i][$j]. Затем я через foreach изменяю данные некоторых ячеек массива $w1 и получаю массив $w2. Соответственно, у меня уже два массива с одинаковыми ключами и количеством элементов. И теперь нужно получить новые значение в массиве $w2[0][key2] = 2 *$w1[0][$key2] - $w2[1][key2+1]; при том, что количество (суммарное) ключей key2 у обоих массивов должно быть меньше на единицу.
Я потому и попытался использовать двойной foreach, чтобы вытащить значения данных из двух массивов путем перебора.
P.s. извиняюсь за возможные ошибки в тексте, мозг кипит уже))
 

AnrDaemon

Продвинутый новичок
Зачем вам что-то "вытаскивать", когда вы ТОЧНО ЗНАЕТЕ, где это "что-то" лежит?
Просто реализуйте алгоритм из задания на PHP. Те же три строчки.
 

phpshnov

Новичок
Зачем вам что-то "вытаскивать", когда вы ТОЧНО ЗНАЕТЕ, где это "что-то" лежит?
Просто реализуйте алгоритм из задания на PHP. Те же три строчки.
PHP:
for ($j = 0; $j <= $Nyears - 1; $j = $j + 1) {
    
$w2[0][$j] = 2 * $w1[0][$j] - $w2[1][$j + 1];
    
}
Написал, но он не считает. Если же перед циклом for пишу $w3 = $w2; и сохраняю результаты в массив $w3, то все равно ничего не подсчитывает, то есть данные $w3 полностью соответствуют данным $w2. Если же я в код цикла for ставлю вместо переменной $Nyears число, например, 4, то в массив $;w3 добавляется строка с нулями.
 

AnrDaemon

Продвинутый новичок
Быть такого не может, потому что не может быть никогда. :)
 
Сверху