---
title: "$_SESSION baklänges"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/176383-session-baklänges"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Web-Tor"
published: "2009-01-16T15:13:37.000Z"
updated: "2009-01-17T19:38:18.000Z"
replies: 12
views: 635
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/176383-session-baklänges"
---

# $_SESSION baklänges

## #1 — Web-Tor, 2009-01-16T15:13Z

Jag har den här koden för att skriva ut innehållet i en kundvagn:

```php
if(count($_SESSION['cart']) > 0){
	foreach($_SESSION['cart'] as $item => $p){
		echo $_SESSION['cart'][$item]['name'];
		echo "<br>";
	}
}else{
	echo 'Kundvagnen är tom';
}
```

Hur gör man för att få ut innehållet i omvänd ordning?

Permalänk: https://www.webforum.nu/p/176383

## #2 — Melea, 2009-01-16T15:30Z

```php
if(count($_SESSION['cart']) > 0){
    arsort($_SESSION['cart']);
    foreach($_SESSION['cart'] as $item => $p) {
        echo $_SESSION['cart'][$item]['name'];
        echo "<br>";
    }
}else{
    echo 'Kundvagnen är tom';
}
```

Permalänk: https://www.webforum.nu/p/2165727

## #3 — SPiN, 2009-01-16T15:44Z

Med Meleas kod sorterar du den, med högsta värdet först. Om du vill skriva ut innehållet i omvänd ordning sen värdena stoppades in, får du använda en for-slinga:

```
for ($i = sizeof($_SESSION['cart']); $i > 0; --$i) {
    echo ...
```

Permalänk: https://www.webforum.nu/p/2165729

## #4 — Web-Tor, 2009-01-17T10:55Z

> **SPiN skrev:**
>
> m du vill skriva ut innehållet i omvänd ordning sen värdena stoppades in, får du använda en for-slinga:

Ja, det är precis detta jag vill göra. Hur skall jag få ut något värde ut sessionen?

Det här funkar ju inte länge:

```php
echo $_SESSION['cart'][$item]['name']
```

Permalänk: https://www.webforum.nu/p/2165780

## #5 — SPiN, 2009-01-17T15:58Z

```
for ($i = sizeof($_SESSION['cart']); $i >= 0; --$i) {
    echo $_SESSION['cart'][$i]['name'];
}
```

Permalänk: https://www.webforum.nu/p/2165808

## #6 — Web-Tor, 2009-01-17T16:06Z

Det var det första jag testade men det ger:

```
PHP Notice:  Undefined offset:  1
```

Permalänk: https://www.webforum.nu/p/2165809

## #7 — Melea, 2009-01-17T16:20Z

```php
if(count($_SESSION['cart']) > 0){
    $_SESSION['cart'] = array_reverse($_SESSION['cart'], true);
    foreach($_SESSION['cart'] as $item => $p){
        echo $_SESSION['cart'][$item]['name'];
        echo "<br>";
    }
} else {
    echo 'Kundvagnen är tom';
}
```

**/r**
Ska vara array_reverse($\_SESSION\['cart'\], true);

Permalänk: https://www.webforum.nu/p/2165813

## #8 — SPiN, 2009-01-17T16:21Z

Jag ändrade i koden ovanför, den ska ju räkna till $i \>= 0 - så att du får med den första posten också.

Ditt felmeddelande tyder däremot på att din array inte har en obruten rad av indexerade element (0, 1, 2, 3 ... n) - det saknas något element någonstans? (0, 1, **3**, ... n)?

Hur stoppar du in och tar bort värden ur kundkorgen? Se till att bevara index-positionerna så ska det inte vara några problem.

Permalänk: https://www.webforum.nu/p/2165814

## #9 — Web-Tor, 2009-01-17T16:28Z

*array_reverse* gillar jag! :)

Enda problemet med din kod är att den sorterar om sessionen varje gång. Men det går ju att lösa genom att använda en lokal variabel.

Tack så mycket!

Permalänk: https://www.webforum.nu/p/2165816

## #10 — Web-Tor, 2009-01-17T17:40Z

Jag kom precis på ett problem. Låt säga att man lägger till följande varor i sin korg.
\- Apa
\- Bil
\- Cykel

Men array_reverse visas kundvagnen så här:
\- Cykel 1 st.
\- Bil 1 st.
\- Apa 1 st.

Allt är frid och fröjd ända tills man lägger till ytterligare en Apa. Då skulle jag vilja att kundvagnen visar sig så här:
\- Apa 2 st.
\- Cykel 1 st.
\- Bil 1 st.

Borde man inte kunna fixa detta genom att lagra en timestamp tillsammans med varje vara och sedan sortera på denna?

Så min fråga är: hur sorterar jag på *$\_SESSION\['cart'\]\['time'\]*?

Permalänk: https://www.webforum.nu/p/2165820

## #11 — SPiN, 2009-01-17T18:14Z

[Taskigt minne?](http://www.webforum.nu/showthread.php?p=1395992#post1395992) ;)

Permalänk: https://www.webforum.nu/p/2165825

## #12 — Web-Tor, 2009-01-17T19:31Z

> **SPiN skrev:**
>
> [Taskigt minne?](http://www.webforum.nu/showthread.php?p=1395992#post1395992) ;)

Hehe :e
usort() kommer jag allt ihåg men hur kommer jag överhuvudtaget åt ett värdena inne i sessionen ("time" i detta fall)?

Min session ser ut så här:

```
cart|a:3:{
	i:1;a:3:{
	s:8:"quantity";i:1;s:2:"id";s:1:"1";s:4:"time";i:1232220492;
	}

	i:2;a:3:{
	s:8:"quantity";i:1;s:2:"id";s:1:"2";s:4:"time";i:1232220494;
	}

	i:3;a:3:{
	s:8:"quantity";i:1;s:2:"id";s:1:"3";s:4:"time";i:1232220495;
	}
}
```

Permalänk: https://www.webforum.nu/p/2165829

## #13 — Web-Tor, 2009-01-17T19:38Z

Shit! Det här funkar ju! :)

```php
function __compare__values($x, $y) {
     return strcmp($y['time'],$x['time']);
}

$temp = $_SESSION['cart'];
usort($temp, "__compare__values");
```

Nu hoppas jag att jag skall vara klar med den här biten. Tack allihopa för hjälpen!

Permalänk: https://www.webforum.nu/p/2165830

---

Tråden på webben: https://www.webforum.nu/amne/php/176383-session-baklänges
