为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 如何过滤结果?

PHP 如何过滤结果?

PHP
婷婷同学_ 2022-01-02 17:31:05
我有一个请求,他选择了很多相同的结果,我尝试过滤结果。要选择结果,我使用了一段时间 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 ?问题就在这里,你看到相同的图标
查看完整描述

2 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

您可以创建一个数组并使用 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);


查看完整回答
反对 回复 2022-01-02
?
动漫人物

TA贡献1815条经验 获得超10个赞

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;

    }

}


查看完整回答
反对 回复 2022-01-02
  • 2 回答
  • 0 关注
  • 133 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信