In the course of any programmer's journey into PHP, they often need to search the newsgroups and web resources to solve a problem.
The first port of call should always be www.php.net, but there are times when you have trouble finding the answer.
This page is my own personal collection of problems that I couldn't find adequate answers for on the Net.
Matching multiple strings in a PHP switch() statement
I wanted to match multiple strings from an array in a case: statement
$strings = array($str1,$str2,$str3);
switch($str_to_match) {
case $str1:
case $str2:
case $str3:
// do something
break;
}
This is OK when you only have a few strings, but gets a bit ugly when your array is large.
On the way to a solution, I tried:
$strings = array($str1,$str2,$str3);
switch($str_to_match) {
case in_array($str_to_match,$strings) :
// do something
break;
}
This seems quite dodgy because
in_array($str_to_match,$strings)
just evaluates to TRUE, rather than actually matching the string.
Here is my final solution - if you can think of a better one, please get in touch:
$strings = array($str1,$str2,$str3);
switch(TRUE) {
case ($some_str==$some_other_string) :
// do something
break;
case in_array($some_str,$strings) :
// do something
break;
}
There is an example of this on php.net in the page documenting switch() but I thought this was clearer.
If you want to get in touch, use the lunaria contact page