Alex Rivera | Logout

get previous array values in foreach

Asked 2010-11-10T19:57:25.910
18

My array :

$arr = array("jan","feb","mar","apr","mei","jun","jul","agu","sep","okt","nov","des");

then i do a foreach

foreach($arr as $ar){
  echo $ar;
}

that will output jan to des

my question is how do i display the previous values in current key?

For example, when I get to feb, I want to display jan too, when I get to jul, i want to display jun, etc.

Edit
Report

2 Answers

58
$previousValue = null;
foreach($arr as $ar){
  echo $ar;
  if($previousValue) {
    echo $previousValue;
  }
  $previousValue = $ar;
}
answered 2010-11-10T20:00:56.543
1
foreach ($arr as $key => $ar) {
    //check we aren't on jan (otherwise we get $key = -1 which doesn't work)
    if ($key != 0) {
        //print previous month followed by current month
        echo $arr[$key - 1] . '-' . $ar . '<br />';
    }
}

//OR, if you want to be able to roll through years then:

$last_key = end(array_keys($arr));
foreach ($arr as $key => $ar) {
    //check we aren't on jan
    if ($key != 0) {
        //print previous month followed by current month
        echo $arr[$key - 1] . ' - ' . $ar . '<br />';
    } else {
        echo $arr[$last_key] . ' - ' . $ar . '<br />';
    }
}
answered 2010-11-10T21:42:50.727

Your Answer