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

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. Прошу подсказать, каким образом сделать подсчет? Куда копать? Какие операторы использовать? Буду благодарен за любую подсказку.
 
Количество одинаково, а индексы?
Приведите пример исходных данных.

P.S.
Ваш код будет терять скорость в геометрической прогрессии при росте любого из четырёх массивов.
При том, что в задании стоит только обход одного массива.
 
Последнее редактирование:
Эти два массива по существу две одинаковые таблицы, только значения в ячейках этих двух таблиц разные. Индексы у двух массивов одинаковые. Первая таблица получается через форму. Порядок действий таков: пользователь указывает период (например с 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. извиняюсь за возможные ошибки в тексте, мозг кипит уже))
 
Зачем вам что-то "вытаскивать", когда вы ТОЧНО ЗНАЕТЕ, где это "что-то" лежит?
Просто реализуйте алгоритм из задания на PHP. Те же три строчки.
 
Зачем вам что-то "вытаскивать", когда вы ТОЧНО ЗНАЕТЕ, где это "что-то" лежит?
Просто реализуйте алгоритм из задания на 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 добавляется строка с нулями.
 
Быть такого не может, потому что не может быть никогда. :)
 
Сверху