---
title: "Förenkla switch-sats"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/138740-förenkla-switch-sats"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "99nvbjed"
published: "2005-12-04T14:00:18.000Z"
updated: "2005-12-04T14:49:01.000Z"
replies: 8
views: 488
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/138740-förenkla-switch-sats"
---

# Förenkla switch-sats

## #1 — 99nvbjed, 2005-12-04T14:00Z

Använder nedstående php-script för att returnera hur många dagar det är i en månad. Det är lite osmidigt, finns det nåt sätt att skriva så att man kan ha flera olika värden på en "case"-rad? Alltså så att alla månader (1, 3, 5...) fångas av samma "case"?
Det skulle ju verkligen bli snyggare då...

```php
function daysInMonth($month,$year){
	switch ($month) {
		case 1:
			return 31;
			break;
		case 2:
			if ( ($year % 4) == 0) {
				return 29;
				break;
			}else{
				return 28;
				break;
			}
		case 3:
			return 31;
			break;
		case 5:
			return 31;
			break;
		case 7:
			return 31;
			break;
		case 8:
			return 31;
			break;
		case 10:
			return 31;
			break;
		case 12:
			return 31;
			break;
		default:
			return 30;
	}
}
```

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

## #2 — oskob, 2005-12-04T14:10Z

Kan man inte göra det med if?

```php

if ( $month == "1" || $month == "2" || $month == "3" osv ) {
   return 31;
}else if ($month == "4" || $month == "5" || $month == "6" osv) {
   return 30;
}else if ( $month == "3" ) {
return 28;
}
```

Men det blev ganska stökigt det med såg jag :/

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

## #3 — kris, 2005-12-04T14:16Z

Skulle tro att det här funkar:

```php
function daysInMonth($month,$year){
    switch ($month) {
        case $month == 1 || $month == 3 || $month == 5 || $month == 7 || $month == 8 || $month == 10 || $month == 12:
            return 31;
            break;
        case 2:
            if ( ($year % 4) == 0) {
                return 29;
                break;
            }else{
                return 28;
                break;
            }
        default:
            return 30;
    }
}
```

Edit: första versionen jag postade verkade inte fungera. Den här verkar det dock.

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

## #4 — Pedda, 2005-12-04T14:17Z

```php
function daysInMonth($month,$year){
    switch ($month) {
        case 1:
        case 3:
        case 5:
        case 7:
        case 8:
        case 10:
        case 12:
            return 31;
            break;
        case 2:
            if ( ($year % 4) == 0) {
                return 29;
                break;
            }else{
                return 28;
                break;
            }
        default:
            return 30;
    }
}
```

Är ett sätt att förkorta den på.

red/ kris, kan man verkligen använda OR i en case? Kanske går, har aldrig testat. :)

red igen/ Annars så kan man ju med date() få ut antalet dagar en viss månad.

```php
date("t", strtotime('2006-05-01'));
```

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

## #5 — Peeer, 2005-12-04T14:22Z

Annars så finns funktionen du är ute efter inbyggt i php-funktionen date()

```php
return date('t',strtotime('2005-12-05'));
```

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

## #6 — Pedda, 2005-12-04T14:24Z

Hehe, du skrev det just som jag redigerade mitt inlägg med date() :)

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

## #7 — kris, 2005-12-04T14:28Z

Min första version verkade inte fungera, har ändrat den nu. Men det verkar smartare att använda date() ;)

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

## #8 — Peeer, 2005-12-04T14:43Z

> **Pedda skrev:**
>
> Hehe, du skrev det just som jag redigerade mitt inlägg med date() :)

Viktigt att poängtera är att mitt inlägg postades före din redigering! ;)  :p

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

## #9 — 99nvbjed, 2005-12-04T14:49Z

```php
date('t',strtotime('2005-12-05'));
```

Den var ju klockren! Passar jättebra...
Skönt att slippa den där switchen. Tack så mycket!

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

---

Tråden på webben: https://www.webforum.nu/amne/php/138740-förenkla-switch-sats
