Replace Nested If Else Statement with Array
The use of Early return and Array Approach will be considered
Nested if else
I am very sure we have either written or seen such nested code.
It isn't pleasant to look at.
public function checkData($var){
if (isset($var)){
if ($var==1){
return 'one';
}
elseif($var==2){
return 'two';
}
elseif($var==3){
return 'three';
}
elseif($var==4){
return 'four';
}
}
else{
return 'null';
}
}
We can make it better
Early Return
public function checkData($var){
if (!isset($var)){
return 'null';
}
if ($var==1){
return 'one';
}
if($var==2){
return 'two';
}
if($var==3){
return 'three';
}
if($var==4){
return 'four';
}
}
Array Approach
public function checkData($var){
$array = [
'1'=>'one',
'2'=>'two',
'3'=>'three',
'4'=>'four',
];
return $array[$var] ?? 'null';
}
The array approach is easy to update and easier to understand as compared to the nested If Else.
The early return also works very fine!
The Array approach can also be used for methods.
Early return Method calling
public function checkData($var){
if (!isset($var)){
return $this->nullMethod($var);
}
if ($var==1){
return $this->oneMethod($var);
}
if($var==2){
return $this->twoMethod($var);
}
if($var==3){
return $this->threeMethod($var);
}
if($var==4){
return $this->fourMethod($var);
}
}
Array Approach Method calling
public function checkData($var){
$array_methods = [
'1'=>'oneMethod',
'2'=>'twoMethod',
'3'=>'threeMethod',
'4'=>'fourMethod',
];
return $this->{$array_methods[$var]($var)};
//to simplify, break it down
$method=$array_methods[$var];
return $this->{$method}($var);
}
Top comments (2)
PHP 8.x exposes
match
which turns your entire article intoThere's no need for arrays or early returns, this is as concise as it gets.
Yes @microerror ,
The match expression can also be used to replace nested if else statement