Jump to content

Find value of Previous Row?


unemployment

Recommended Posts

I have rows being generated in a foreach loop.  I need to find the time in the row before it (or maybe after it if my logic is screwed up) to see if the times are equal.  If they are equal, I need to see if the next row after that is equal. If it is not equal then stop.

 

mysql

user id    time        action

1              5            bought

1              5            purchased

1              5            sold

1              4            created

 

foreach($newsfeed as $k => $news)
{ 		
if ($news['time'] == $news['time'] of $k--)
{
	echo " you bought purchased and created";
}
        else
        {
                echo $news['action'];
         }
}

Link to comment
https://forums.phpfreaks.com/topic/235306-find-value-of-previous-row/
Share on other sites

update a temporary variable at the end of the loop... and declare it null beforehand.

 

example

$lastItemtime = null;
foreach($newsfeed as $k => $news)
{ 		
if ($lastItemtime == $news['time'])
{
	echo " you bought purchased and created";
}
        else
        {
                echo $news['action'];
         }
         $lastItemtime = $news['time'];
}

update a temporary variable at the end of the loop... and declare it null beforehand.

 

example

$lastItemtime = null;
foreach($newsfeed as $k => $news)
{ 		
if ($lastItemtime == $news['time'])
{
	echo " you bought purchased and created";
}
        else
        {
                echo $news['action'];
         }
         $lastItemtime = $news['time'];
}

 

That's almost the solution except it doesn't work for the first row.  Any way to make that work?

I don't understand why not, $lastItemtime is set to null before the loop even starts.  So it's not failing.

 

What about it isn't working?

 

These are the results I am getting.  I want the works to disappear and for it to only form 1 row when the rows happen to have the same timestamp.

 

You have made a purchase.

6 Hours ago

 

works

6 Hours ago

 

works

6 Hours ago

 

I want the works to disappear and for it to only form 1 row when the rows happen to have the same timestamp.

then you probably need to break out of the loop

 

foreach($newsfeed as $k => $news)
{ 		
if ($lastItemtime == $news['time'])
{
	echo " you bought purchased and created";
                break;
}
        else
        {
                echo $news['action'];
         }
         $lastItemtime = $news['time'];
}

Unfortunately I have multiple ifs in this loop and a break just breaks the whole thing.

 

Plus I might have multiple scenarios in 1 loop

 

mysql

1              5            bought

1              5            purchased

1              5            sold

1              4            created

1              5            bought

1              5            purchased

1              5            sold

1              4            created

1              5            bought

1              5            purchased

1              5            sold

1              4            created

 

Where I would want the results to be

 

You just bought purchased sold

You just created

you just bought purchased sold

you just created

etc...

 

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.