***
id: c668d4b9-25d6-4e11-b59c-811f94af4220
title: switch
slug: /reference/switch
description: Execute different instructions based on a variable's value.
max-toc-depth: 3
----------------
Execute different instructions based on a variable's value
## **Properties**
An object that accepts the following properties.
Name of the variable whose value needs to be compared.
[`Case_params`](#case_params) object of key-mapped values to array of [SWML Methods](/docs/swml/reference) to execute.
Array of [SWML Methods](/docs/swml/reference) to execute if no cases match.
### case\_params
The `case_params` object serves as a dictionary where each key is a string identifier, and
the associated value is an array of SWML Method objects.
Name of the variable whose value needs to be compared.
## **Examples**
```yaml
version: 1.0.0
sections:
main:
- switch:
variable: call.type
case:
sip:
- play:
url: "say: You're calling from SIP."
phone:
- play:
url: "say: You're calling from phone."
default:
- play:
url: 'say: Unexpected error'
```
```json
{
"version": "1.0.0",
"sections": {
"main": [
{
"switch": {
"variable": "call.type",
"case": {
"sip": [
{
"play": {
"url": "say: You're calling from SIP."
}
}
],
"phone": [
{
"play": {
"url": "say: You're calling from phone."
}
}
]
},
"default": [
{
"play": {
"url": "say: Unexpected error"
}
}
]
}
}
]
}
}
```
```yaml
version: 1.0.0
sections:
main:
- set:
foo: 5
- execute:
dest: example_fn
params:
foo: '${foo}'
example_fn:
- switch:
variable: params.foo
default:
- play:
url: 'say: nothing matches'
case:
'5':
- play:
url: 'say: yup, math works!'
```
```json
{
"version": "1.0.0",
"sections": {
"main": [
{
"set": {
"foo": 5
}
},
{
"execute": {
"dest": "example_fn",
"params": {
"foo": "${foo}"
}
}
}
],
"example_fn": [
{
"switch": {
"variable": "params.foo",
"default": [
{
"play": {
"url": "say: nothing matches"
}
}
],
"case": {
"5": [
{
"play": {
"url": "say: yup, math works!"
}
}
]
}
}
}
]
}
}
```
## **See Also**
* **[Variables and Expressions](/docs/swml/reference/variables)**: Complete reference for SWML variables, scopes, and using variables in conditional logic
* **[cond](/docs/swml/reference/cond)**: Alternative conditional logic method