---
title: "Kolla värden i en array"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/137780-kolla-värden-i-en-array"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Bjuufaren"
published: "2005-11-17T07:52:30.000Z"
updated: "2005-11-17T10:00:06.000Z"
replies: 23
views: 765
page: 1
pages: 2
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/137780-kolla-värden-i-en-array"
---

# Kolla värden i en array

_Sida 1 av 2._

## #1 — Bjuufaren, 2005-11-17T07:52Z

Hej, det här är säkert jättelätt men jag har kollat runt i manualen utan att hitta något..

```
// dessa sätts i if-satser, de får ett värde eller så blir de "tomma"
$arr['key1'] = "value1";
$arr['key2'] = "";

// det här if-villkoret borde gå att förenkla
if ($arr['key1'] == "" && $arr['key2'] == "")
{
  // gör saker
}
```

Problemet är alltså att min $arr kan bli ganska stor, vilket gör villkoret i if-satsen kan bli gigantiskt långt.

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

## #2 — Melea, 2005-11-17T07:56Z

Hm, du kan inte köra såhär då?

```php
if(empty($arr)) {
    // gör saker
}
```

Eller om du vill komma att $arr innehållet något värde kan du ta en titt på funktionen [in_array()](http://www.php.net/in_array).

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

## #3 — Bjuufaren, 2005-11-17T08:16Z

empty fungerar tyvärr inte (skulle fungera om jag aldrig sätter $arr\[$key\] == "")
in_array fungerar tyvärr inte heller riktigt.

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

## #4 — Melea, 2005-11-17T08:19Z

Jo men du vill ju kolla att alla $arr är tomma, och om så är fallet ska villkoret uppfyllas.
Eller?

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

## #5 — Bjuufaren, 2005-11-17T08:24Z

```php
$arr['key1'] = '';
$arr['key2'] = '';

print empty($arr);
```

 

..ger ingen utskrift.

Med in_array kan jag kolla om "" finns i arrayen, visst, men jag vill kolla om **alla** värden är "" (eller om något värde != "").

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

## #6 — Melea, 2005-11-17T08:41Z

Uhm, eftersom du definerar att $arr ska ha ett värde (även '' är ett värde) så funkar inte empty.
Testa istället något åt det här hållet:

```php
if(strlen($arr) >= 1) {
   // gör något
}
```

Har ingen möjlighet att testa, sitter på jobbet.
Men hur blir resultatet om du kör...?

```php
if(!isset($arr)) {
   // gör något
}
```

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

## #7 — Bjuufaren, 2005-11-17T08:57Z

strlen fungerar inte heller.. Kom på den här.. inte direkt självförklarande kod, men bästa lösningen ändå?

```php
rsort($arr);
if (!$arr[0])
{
  //gör saker
}
```

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

## #8 — Melea, 2005-11-17T08:57Z

> **Bjuufaren skrev:**
>
> strlen fungerar inte heller.. Kom på den här, kanske bästa lösningen då?
> 
>
>
> ```php
> rsort($arr);
> if (!$arr[0])
> {
>   //gör saker
> }
> ```

Jao, testa om min uppdatering funkar, annars funkar din lösning utmärkt. :)

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

## #9 — Bjuufaren, 2005-11-17T09:02Z

isset fungerar nog inte av samma anledning som empty.
Hmm, min lösning är inte klockren ändå, jag vill ju ha kvar nycklarna i arrayen, vilket gör att jag måste skapa en kopia av den först. Funkar, men känns onödigt komplicerat.

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

## #10 — Melea, 2005-11-17T09:05Z

Svårt att hjälpa när man inte kan testa själv. :l
Funkar det inte att endast köra if(!$arr) då?

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

## #11 — Bjuufaren, 2005-11-17T09:10Z

if fungerar tyvärr inte heller. Det hade ju nästan varit för lätt. :)

Tack för att du försöker hjälpa i alla fall, alltid bra med lite nya tankar när man kört fast.

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

## #12 — aasah, 2005-11-17T09:15Z

```php
$tom = TRUE;
foreach ($arr as $t)
   if ($t != '') $tom = FALSE;
if ($tom) {
  //Do things
}
```

Borde funka. :)

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

## #13 — Melea, 2005-11-17T09:17Z

Jo, men då måste han köra en loop, tänkte först i samma banor.
Men det känns som det måste gå att lösa på ett enklare vis.

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

## #14 — @nders, 2005-11-17T09:22Z

Jag kan inte php, så jag vet inte om det finns ett bättre sätt, men ett förslag:

```php
if (implode("", $arr)=="") {
	// tomt utav bara helskotta!
}
```

Mvh

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

## #15 — aasah, 2005-11-17T09:23Z

> **Melea skrev:**
>
> Jo, men då måste han köra en loop, tänkte först i samma banor.
> Men det känns som det måste gå att lösa på ett enklare vis.

  :q Antingen kör han loopen synligt, eller så anropar han en funktion i PHP som troligen är implementerad som en loop - vad är skillnaden? Bortsett ifrån om det fungerar eller ej?

Att isSet och empty inte funkar beror ju på att värdena **är** satta.

@nders, vad gör implode?   :q Han vill ju inte bli av med satta verkliga värden.

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

## #16 — Melea, 2005-11-17T09:24Z

Iofs, nog jag som är trött på morgonknuten. :OO

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

## #17 — Matte, 2005-11-17T09:29Z

Jag funderar om det går att göra något med array_count_values().
Har ingen möjlighet att testa själv, men vad händer om du gör så här ?

```php
$check = array_count_values($arr);
if (isset($check['']) && count($check) == 1) {
   // Arrayen består bara av tomma värden
}
```

Om det inte fungerar, kör en print_r() på $check, och se vad den ger. Då borde man kunna se hur man ska ändra sin if-sats för att få det att fungera.

\[EDIT\]
Såg nu @nders variant.
Den är den helt rätta. Har man bara tomma värden ger implode en tom sträng.
Då hans implode heller inte tilldelas till någon variabel, påverkas heller inte arrayen.

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

## #18 — @nders, 2005-11-17T09:30Z

> @nders, vad gör implode?

Implode klistrar ihop alla platser i arrayen till en sträng, med given separator (ingen i detta fall). Ingen förändring görs på arrayen, utan en ny sträng skapas (som i det här fallet bara används för att jämföra.).

Mvh

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

## #19 — Bjuufaren, 2005-11-17T09:31Z

@anders förslag funkade klockrent. Är nog den smidigaste lösningen. Tack för hjälpen allihopa. :)

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

## #20 — aasah, 2005-11-17T09:34Z

@nders och Matte - vad vinner man på era förslag jämfört med att löpa igenom arrayen för hand? Båda förslagen måste väl också löpa igenom arrayen och göra lite mer dessutom? Eller? Handlar det mer om kortare kod?

Jag vill gärna förstå vad skillnaden är.   :q 

Bjuufaren - markera @nders svar som löst! :)

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

---

Tråden på webben: https://www.webforum.nu/amne/php/137780-kolla-värden-i-en-array  
Nästa sida: https://www.webforum.nu/amne/php/137780-kolla-värden-i-en-array/page2.md
