Сравнение результатов работы foreach

Samail
На сайте с 10.05.2007
Offline
369
694


foreach($lines as $line){
$line = explode(" ", $line);
if ($line[1] !==NULL) {
print 'Значение1: '.$line[1].', Значение2: '. $line[2].', Значение3: '.$line[3]'<br />';
}
}

Выводит:

Значение1: 105, Значение2: 230, Значение3: 290

Значение1: 110, Значение2: 220, Значение3: 320

Значение1: 100, Значение2: 200, Значение3: 300

Как сравнивать значения с значением в предыдущей строке, что-бы получить:

Значение1: 105 (-5), Значение2: 230 (+10), Значение3: 290 (-35)

Значение1: 110 (+10), Значение2: 220 (+20), Значение3: 325 (+25)

Значение1: 100 (), Значение2: 200 (), Значение3: 300 ()

totamon
На сайте с 12.05.2007
Offline
437
#1
Samail:
Как сравнивать значения с значением в предыдущей строке, что-бы получить:

у вас получается что сравнить надо со следующим) с предыдущим как раз без проблем, просто сохраняйте значения и на следующем шаге сравнивайте с текущим. может сделать реверс $lines, те наоборот с конца массив обработать...

Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
R
На сайте с 20.02.2015
Offline
59
#2

Я так понимаю, что у массива $lines числовой индекс.


foreach($lines as $idx => $line){
$line = explode(" ", $line);
if ($line[1] !==NULL) {
if ($idx > 0) // если не первое значение в массиве, то..
$back_line = $lines[$idx - 1]; // предыдущая строка
print 'Значение1: '.$line[1].', Значение2: '. $line[2].', Значение3: '.$line[3]'<br />';
}
}
bukachuk
На сайте с 07.09.2008
Offline
97
#3

<?php

$lines = file("1.txt");
$line = array();
foreach($lines as $item){
$item = explode("\t", trim($item));
if (isset($item[1]) && $item[1]) {
$line[] = $item;
}
}

foreach($line as $key => $item){
print 'Значение1: ' . $item[0] . (isset($line[$key+1][0]) ? '(' . ($item[0] - $line[$key+1][0]) . ')' : '') . ', Значение2: '. $item[1] . (isset($line[$key+1][1]) ? '(' . ($item[1] - $line[$key+1][1]) . ')' : '') . ' , Значение3: ' . $item[2] . (isset($line[$key+1][2]) ? '(' . ($item[2] - $line[$key+1][2]) . ')' : '') . '<br />' . PHP_EOL;
}

?>
Программирование PHP,Mysql (/ru/forum/934470)
Samail
На сайте с 10.05.2007
Offline
369
#4
totamon:
у вас получается что сравнить надо со следующим) с предыдущим как раз без проблем, просто сохраняйте значения и на следующем шаге сравнивайте с текущим. может сделать реверс $lines, те наоборот с конца массив обработать...

Сделал риверс ...а можно как-то поле этого обратно вернуть порядок, что-бы на экран вывелись строки в том порядке в котором и были?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий