---
title: "Bästa loopgrejen"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/47720-bästa-loopgrejen"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "nkrantz"
published: "2002-07-11T18:56:31.000Z"
updated: "2002-07-15T14:08:46.000Z"
replies: 11
views: 375
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/47720-bästa-loopgrejen"
---

# Bästa loopgrejen

## #1 — nkrantz, 2002-07-11T18:56Z

Hello...

Sitter här å håller på med en grej å kom å tänka på hur man bör konstruera looparna när man loopar igenom resultatet från en db query..

normalt använder jag:

```php
for ($i=0; $i<mysql_num_rows($rSet); $i++)
```

eller:

```php
while ($data = mysql_fetch_object($rSet))
```

lite beroende på om jag vill ha resultatet i en array eller ej... 

men jag kom ju å tänka på att följande funkade också:

```php
for ($i=0; $data = mysql_fetch_object($rSet); $i++)
```

å om man använder den här sistnämnda så behöver man ju inte ha 

```php
$data = mysql_fetch_object($rSet);
```

efter den loopen som man behöver i det översta exemplet...

Så nu undrar jag, lite trött efter att buggcheckat en hel dag, vad som är smartast å mest effektivt att använda... 

// Nippe

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

## #2 — LAMP, 2002-07-11T18:59Z

<http://www.webforum.nu/showthread.php?s=&postid=388422#post388422>

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

## #3 — nkrantz, 2002-07-11T19:01Z

njea... det var inte riktigt det jag eftersökte som svar... men det är en mycket bra tråd!

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

## #4 — LAMP, 2002-07-11T19:04Z

Normalt sätt brukar for-slingor förespråkas framför andra metoder att loopa ut data. Hur det är i ditt fall vet i sören, för jag är inte tillräckligt hemma än i vad de olika metoderna returnerar.

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

## #5 — GunnarD, 2002-07-11T19:21Z

while() är väl mera logiskt/lättläst än att göra det i en for loop.

Normalt används en for loop när man vill räkna upp/ner någonting, medans en while() loop körs så länge uttrycket är sant.

Vilket man använder är en smak sak, men i detta fallet skulle jag använda while() eftersom det är mera logiskt och lättläst. :)

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

## #6 — nkrantz, 2002-07-11T19:24Z

jo... men om vi säger att jag vill använda mig av upp/ner räkning... vad är bäst att ha som villkor för hur länge for loopen skall fortsätta...

```php
for ($i=0; $i<mysql_num_rows($rSet); $i++)
```

eller

```php
for ($i=0; $data=mysql_fetch_object($rSet); $i++)
```

?

Jag ger mig inte ;)
/Nippe

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

## #7 — Chavez, 2002-07-12T11:33Z

mysql_num_rows skall du iaf inte sätta i for parentesen. Det räknar du ut innan (för som jag förstår står detta värde sig genom alla körningar).

Det rör sig om flera 100 % i körtider.

Jag har inte tittat närmare på det rent prestandamässigt. Men kör du \*nix finns ett program som heter ApacheBench (eller nått liknande, tror inte det finns i win-versionen) som följer med Apache. I Apache's bin heter det binären ab.

Där kan du själv testa vad som går bäst. Men var är det för fel på: 

```php
<?PHP

...
...

$result = mysql_query(..); 

whíle ($row = mysql_fetch_array($result)) {
    ...
    ...
}

...
...

?>
```

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

## #8 — nkrantz, 2002-07-12T11:58Z

varför inte sätta mysql_num_rows i for loopen? Det kontrollerar ju bara hur många rader som queryn ger tillbaka... Borde ju inte vara någon större prestandavinst att spara det till en variabel innan forloopen... while loopen kör jag i vanliga fall, jag satt bara å experimenterade lite å kom å tänka på det olika varianterna och tyckte att det vore bäst att kolla med profsen!

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

## #9 — Phorpher, 2002-07-12T12:16Z

Några flera 100% rör det sig inte om.

Det är klart att man får en lite prestandavinst om man tilldelar en variabel med mysql_num_rows() och sen använder den variabeln som jämförelse istället. Men skillnaden är nog marginell.

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

## #10 — Chavez, 2002-07-13T19:35Z

Jag vet inte exakt med mysql_num_rows, men en count i for gör flera hundra procent!

Nu märker man kanske det inte ändå, eftersom det är så korta körtider, men procentuellt sett är det så.

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

## #11 — SPiN, 2002-07-15T09:30Z

Använder du for-loopen får du en massa ( Nåja, två ;) ) skräp-variabler, vilket jag inte tycker om - och eftersom att for-loopar också är de mest komplexa looparna så är den troligtvis söligare. Använd while().

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

## #12 — nkrantz, 2002-07-15T14:08Z

ni är bra ni! ;)

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

---

Tråden på webben: https://www.webforum.nu/amne/php/47720-bästa-loopgrejen
