Search code examples
phparraysswitch-statementlookupassociative-array

Implementing a simple lookup array


I often find myself needing a simple PHP lookup array/table where I don't want to bother using a database.

For instance, I might have:

1 stands for "Good"
2 stands for "Bad"
3 stands for "Ugly"

Two ways it could be implemented are shown below. Is one more efficient than the other? Is there any other more intuitive ways to implement this?

switch($code)
{
    case 1:
        $result = "Good";
        break;
    case 2:
        $result = "Bad";
        break;
    case 3:
        $result = "Ugly";
        break;
    default:
        $result = NULL;
}

$array = array(
    1 => "Good",
    2 => "Bad",
    3 => "Ugly"
);
$result = $array[$code];

Solution

  • It's a matter of what are you going to do with your lookup.

    • If it's just a lookup of key -> value pairs - array is a way to go
    • If you want to perform different actions based on the key - it's actually a good use case for Strategy pattern - no case or array that way at all.

    So, case option is inferior in most cases, as it is less scalable and not able to change in run time.

    To simulate the default case, use something like

    $result = in_array($key, $lookup) ? $lookup[$key] : $default;