PHP 如何过滤结果?

我有一个请求,他选择了很多相同的结果,我尝试过滤结果。要选择结果,我使用了一段时间 PHP,如下所示:


while ($row = mysqli_fetch_assoc($result)) { 


    if ($row['id'] == '1') {

        echo 'a';   }

    else if ($row['id'] == '2') {

        echo 'b';   

    } else if ($row['id'] == '3') {

        echo 'c';   

    } else if ($row['id'] == '4' || $row['id'] == '5'|| $row['id'] == '6') {

        echo 'd';

    }

}

结果是:abcddd


我该怎么做才能只有这个: abcd ?


问题就在这里,你看到相同的图标

http://img1.mukewang.com/61d170f20001621b02150034.jpg

婷婷同学_
浏览 134回答 2
2回答

慕姐4208626

您可以创建一个数组并使用 in_array 进行检查,while ($row = mysqli_fetch_assoc($result)) {    if ($row['id'] == '1') {        if(!in_array('a', $ar))            $ar[] = 'a';    } else if ($row['id'] == '2') {        if(!in_array('b', $ar))            $ar[] = 'b';    } else if ($row['id'] == '3') {        if(!in_array('c', $ar))            $ar[] = 'c';    } else if ($row['id'] == '4' || $row['id'] == '5' || $row['id'] == '6') {        if(!in_array('d', $ar))            $ar[] = 'd';    }}对于您的代码段,开关是更好的版本,$ar = [];while ($row = mysqli_fetch_assoc($result)) {    $a = '';    switch ($row['id']) {        case '1':$a = 'a';            break;        case '2':$a = 'b';            break;        case '3':$a = 'c';            break;        case '4':case '5':case '6':$a = 'd';            break;        default:break;    }    !empty($a) && !in_array($a, $ar) && $ar[] = $a;}最后使用内爆,echo implode(' ', $ar);

动漫人物

PHP 7+ 的另一种解决方案:$idMapping = [    1 => 'a',    2 => 'b',    3 => 'c',    4 => 'd',    5 => 'd',    6 => 'd',];$letters = [];while ($row = mysqli_fetch_assoc($result)) {    if (        ($letter = $idMapping[(int) $row['id']] ?? null)        && !in_array($letter, $letters)    ) {        $letters[] = $letter;    }}
打开App,查看更多内容
随时随地看视频慕课网APP