---
title: "Undefined offset"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/191258-undefined-offset"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "K@llen"
published: "2013-03-29T10:21:40.000Z"
updated: "2013-03-29T20:21:20.000Z"
replies: 7
views: 973
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/191258-undefined-offset"
---

# Undefined offset

## #1 — K@llen, 2013-03-29T10:21Z

Hejsan gurus,

Har ett problem jag inte lyckas få rätt på. Misstänker att det har med odefierat index i en array att göra. Felmeddelande:

Undefined offset: 46

```
$quoteText = $row['quoteText'];	
$shortText = explode(" ", $quoteText);
```

```
for ($i = 0; $i < 47; $i++) {
  	echo $shortText[$i] . " ";
}
```

Hur bär jag mig åt för att få bort varningen?

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

## #2 — casca, 2013-03-29T10:28Z

Är du säker på att det alltid blir 47 element i arrayen?

Bättre att räkna antalet element i $shortText:

```
for ($i = 0; $i < count($shortText); $i++) {
  	echo $shortText[$i] . " ";
}
```

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

## #3 — K@llen, 2013-03-29T10:35Z

Oj, nej det är jag inte. Vill dock bara presentera 47 element.

Då får jag sätta villkoret i loopen dynamiskt. Tack casca. :)

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

## #4 — K@llen, 2013-03-29T10:42Z

Kod för att lösa problemet:

```
if ( count($shortText) < 47 ) { $z = count($shortText); } else { $z = 47; }
				
for ($i = 0; $i < $z; $i++) {
    echo $shortText[$i] . " ";
}
```

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

## #5 — voigtann1, 2013-03-29T11:02Z

borde du inte kunna skriva det så här:

```
$z = min(count($shortText), 47);
```

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

## #6 — drew, 2013-03-29T12:46Z

> **[voigtann1 skrev:](https://www.webforum.nu/p/1559276)**
>
> borde du inte kunna skriva det så här:
>
>
> ```
> $z = min(count($shortText), 47);
> ```

Jo, och skulle dessutom se snyggare ut. Tycker jag.

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

## #7 — K@llen, 2013-03-29T19:45Z

Tack för förbättringen voigtann1. Läste dock följande kommentar i dokumentationen, så snyggast är kanske inte alltid bäst:

> I tested this with max(), but I suppose it applies to min() too: If you are working with numbers, then you can use:
>  
>     $a = ($b \< $c) ? $b : $c;
>  
>  which is somewhat faster (roughly 16%) than
>  
>     $a = min($b, $c);
>  
>  I tested this on several loops using integers and floats, over 1 million iterations.
>  
>  I'm running PHP 4.3.1 as a module for Apache 1.3.27.

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

## #8 — voigtann1, 2013-03-29T20:21Z

Men i ditt fall så kör du metoden count() två gånger, man få kolla vad som passar dig bäst, i personens exempel så är det 1 miljon loopar, vilket förmodligen inte är något man kommer ha i någon normal loop.

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

---

Tråden på webben: https://www.webforum.nu/amne/php/191258-undefined-offset
