yazdığınız şekil tamamiyle yanlış denemedim fakat aşağıdaki şekilde mühtemelen çalışır
switch ($action) {
    case "start":
        foreach ($menu as $opt ){
            echo $opt["menu_start"];
        }
        break;
    case "menu_name":
        foreach ($menu as $opt ){
            echo $opt["menu_name"];
        }
        break;
    case "menu_self":
        foreach ($menu as $opt ){
            echo $opt["menu_self"];
        }
        break;
    case "end":
    break;
}
switch case ile if else arasında hiç bir fark yok hatta if conditions switch den daha hızlı çalışır