php 根据优先级选择数组的值

ewm0tg9j  于 2023-05-16  发布在  PHP
关注(0)|答案(1)|浏览(89)

我有一个数组,它显示了一个可用的视频质量,如下所示:

$quality = [
    "720p",
    "480p",
    "hls-5999",
    "hls-666"
];

P.S:每个视频的可用质量输出是不同的,没有固定的顺序
我想按此优先级选择可用的视频质量
我试过这段代码,我知道它肯定是错的,但我完全不知道如何修复它

foreach ($quality as $key) {
    if($key == "480p") {
        $is_selected = "480p";
        break;
    }
    elseif ($key == "720p") {
        $is_selected = "720p";
        break;
    }
    elseif ($key == "SD") {
        $is_selected = "SD";
        break;
    }
    elseif (preg_match("~hls-5\d{3}~",$key,$matches)) {
        $is_selected = $matches[0];
        break;
    }
}
46qrfjad

46qrfjad1#

更好的方法,但只需按所需顺序在数组中搜索。你没有说明如果有多个hls-5???你想做什么,但这需要第一个:

if(in_array("480p", $quality)) {
    $is_selected = "480p";
}
elseif(in_array("720p", $quality)) {
    $is_selected = "720p";
}
elseif(in_array("SD", $quality)) {
    $is_selected = "SD";
}
elseif($matches = preg_grep("~hls-5\d{3}~", $quality)) {
    $is_selected = reset($matches);
}

相关问题