Php 在这种情况下,如何避免使用过多的ifs?

Php 在这种情况下,如何避免使用过多的ifs?,php,optimization,Php,Optimization,这是可行的,但似乎不是正确的编码方式 我不知道该怎么办 foreach ($data as $tag) { if ($tag==1) echo "<a onclick=\"window.location.href='/buscatag/1'\">Coméda</a>,\n"; if ($tag==2) echo "<a onclick=\"window.location.href='/buscatag/2'\">Ecchi</a>,

这是可行的,但似乎不是正确的编码方式

我不知道该怎么办

foreach ($data as $tag) {
    if ($tag==1) echo "<a onclick=\"window.location.href='/buscatag/1'\">Coméda</a>,\n";
    if ($tag==2) echo "<a onclick=\"window.location.href='/buscatag/2'\">Ecchi</a>,\n";
    if ($tag==3) echo "<a onclick=\"window.location.href='/buscatag/3'\">Peitos grandes</a>,\n";
    if ($tag==4) echo "<a onclick=\"window.location.href='/buscatag/4'\">Nudez</a>,\n";
    if ($tag==5) echo "<a onclick=\"window.location.href='/buscatag/5'\">Seinen</a>,\n";
    if ($tag==6) echo "<a onclick=\"window.location.href='/buscatag/6'\">Violência<a/>,\n";
    if ($tag==7) echo "<a onclick=\"window.location.href='/buscatag/7'\">Vida Cotidiana</a>,\n";
    if ($tag==8) echo "<a onclick=\"window.location.href='/buscatag/8'\">Harém</>,\n";
    if ($tag==9) echo "<a onclick=\"window.location.href='/buscatag/9'\">Ação</a>,\n";
    if ($tag==10) echo "<a onclick=\"window.location.href='/buscatag/10'\">Shonen</a>,\n";
    if ($tag==11) echo "<a onclick=\"window.location.href='/buscatag/11'\">Super Poderes</a>,\n";
    if ($tag==12) echo "<a onclick=\"window.location.href='/buscatag/12'\">Aventura</a>,\n";
    if ($tag==13) echo "<a onclick=\"window.location.href='/buscatag/13'\">Fantasia</a>,\n";
    if ($tag==14) echo "<a onclick=\"window.location.href='/buscatag/14'\">Loli</a>,\n";
}
foreach($data作为$tag){
如果($tag==1)回显“,\n”;
如果($tag==2)echo“,\n”;
如果($tag==3)echo“,\n”;
如果($tag==4)echo“,\n”;
如果($tag==5)echo“,\n”;
如果($tag==6)echo“,\n”;
如果($tag==8)echo“,\n”;
如果($tag==10)echo“,\n”;
如果($tag==11)echo“,\n”;
如果($tag==12)echo“,\n”;
如果($tag==13)echo“,\n”;
如果($tag==14)echo“,\n”;
}

当您要对同一变量进行多次测试时,可以使用开关使其更好:

foreach ($data as $tag) {
    switch ($tag) {
        case 1:
            echo "<a onclick=\"window.location.href='/buscatag/1'\">Coméda</a>,\n";
            break;
        case 2:
            echo "<a onclick=\"window.location.href='/buscatag/2'\">Ecchi</a>,\n";
            break;
    }
}
foreach($data作为$tag){
交换机($tag){
案例1:
回声“,\n”;
打破
案例2:
回声“,\n”;
打破
}
}

在代码中,您可以立即将数字放入标签中

试一试

$names=['name1','name2'…];
foreach($data作为$tag){
echo sprintf(“,\n”,$tag,$names[$tag-1]);
}
//将$lookup定义为
$lookup=[1=>Coméda',2=>Ecchi',];//等
//注意键和值之间的关系
foreach($data作为$tag){
回声“,\n”;
}

实际上,这种情况比我提出的更好,这解决了什么问题?如何区分Comda、
Ecchi
等?您的名称数组索引为0,标记从1开始。它不匹配
$names = ['name1', 'name2'...];

foreach ($data as $tag) {
   echo sprintf("<a onclick=\"window.location.href='/buscatag/%s'\">%s</a>,\n", $tag, $names[$tag-1]);
}
// Define $lookup as 
$lookup = [1 => 'Coméda', 2 => 'Ecchi',]; // etc
// Note the relation between key and value

foreach ($data as $tag) {
    echo "<a onclick=\"window.location.href='/buscatag/{$tag}'\">" . $lookup[$tag] . "</a>,\n";
}