Php 无法在开关状态下获取值

Php 无法在开关状态下获取值,php,Php,在这段代码中,我正在检查用户输入值是否与我的数组键匹配我想把default纯值放在开关条件的默认部分,但它回显了empety值为什么开关默认值不工作我的错误是什么 谢谢 我为if条件添加了一个else语句,但它返回值很多次我不想要这个 const EMOJI = [ ":lol" => "emoji/0046.gif", ":d" => "emoji/0055.gif", ":|" => "emoji/poker.png",

在这段代码中,我正在检查用户输入值是否与我的数组键匹配我想把default纯值放在开关条件的默认部分,但它回显了empety值为什么开关默认值不工作我的错误是什么 谢谢

我为if条件添加了一个else语句,但它返回值很多次我不想要这个

 const EMOJI = [
        ":lol" => "emoji/0046.gif",
        ":d" => "emoji/0055.gif",
        ":|" => "emoji/poker.png",
        ":(" => "emoji/0005.gif",
        ":cool" => "emoji/0038.gif",
        ":shy" => "emoji/0001.gif",
        ":)" => "emoji/0003.gif",
        ":p" => "emoji/0008.gif",
        ":h" => "emoji/0031.gif",
        ":search" => "emoji/0042.gif",
        ":'(" => "emoji/0057.gif",
        ":cry" => "emoji/0048.gif",
        ":think" => "emoji/0052.gif",
        ":y" => "emoji/0053.gif",
        ":@" => "emoji/0052.gif",
        ":xd" => "emoji/0056.gif",
        ":punch" => "emoji/0063.gif",
        ":*" => "emoji/0064.gif",
        ":angle" => "emoji/0065.gif",
        ":sick" => "emoji/0013.gif",
        ":flower" => "emoji/0067.gif"
    ];


    if ($_POST['method'] === 'fetch') {
        $messages = $chat->fetchMessage();

        if (!empty($messages)) {
            foreach ($messages as $key => $value) { ?>

            <div class="message" id="<?php echo $value['message_id'] ?>">
                <p class="username"><?php echo $value['username']; ?></p><span style="font-size: 12px">say:</span>
                <?php


                $value = strtolower($value['message']);
                $arraykey = array_keys(EMOJI);
                for ($i = 0; $i < count($arraykey); $i++) {
                    if (preg_match_all("~" . preg_quote($arraykey[$i], '~') . "~", $value, $match)) {
                        switch ($match[0][0]) {
                            case ":lol":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":lol"].'"', $value);
                                echo $one;
                                break;
                            case ":d":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":d"].'"', $value);
                                echo $one;
                                break;
                            case ":|":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":|"].'"', $value);
                                echo $one;
                                break;
                            case ":(":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":("].'"', $value);
                                echo $one;
                                break;
                            case ":cool":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":cool"].'"', $value);
                                echo $one;
                                break;
                            case ":shy":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":shy"].'"', $value);
                                echo $one;
                                break;
                            case ":)":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":)"].'"', $value);
                                echo $one;
                                break;
                            case ":P":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":p"].'"', $value);
                                echo $one;
                                break;
                            case ":h":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":h"].'"', $value);
                                echo $one;
                                break;
                            case ":search":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":search"].'"', $value);
                                echo $one;
                                break;
                            case ":'(":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":'("].'"', $value);
                                echo $one;
                                break;
                            case ":cry":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":cry"].'"', $value);
                                echo $one;
                                break;
                            case ":think":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":think"].'"', $value);
                                echo $one;
                                break;
                            case ":y":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":y"].'"', $value);
                                echo $one;
                                break;
                            case ":@":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":@"].'"', $value);
                                echo $one;
                                break;
                            case ":xd":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":xd"].'"', $value);
                                echo $one;
                                break;
                            case ":punch":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":punch"].'"', $value);
                                echo $one;
                                break;
                            case ":*":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":*"].'"', $value);
                                echo $one;
                                break;
                            case ":angle":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":angle"].'"', $value);
                                echo $one;
                                break;
                            case ":sick":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":sick"].'"', $value);
                                echo $one;
                                break;
                            case ":flower":
                                $one = str_replace($match[0], '<img src=" '.EMOJI[":flower"].'"', $value);
                                echo $one;
                                break;
                            default:
                                echo $value;
                        }

                    } ?>
                    </div>
                    <?php
                }
            }
        } else {
            echo "empety message";
        }

    } 
const表情符号=[
“:lol”=>“表情符号/0046.gif”,
“:d”=>“表情符号/0055.gif”,
“:|”=>“emoji/poker.png”,
“:(“=>”emoji/0005.gif“,
“:cool”=>“表情符号/0038.gif”,
“:shy”=>“表情符号/0001.gif”,
“:)”=>“表情符号/0003.gif”,
“:p”=>“表情符号/0008.gif”,
“:h”=>“emoji/0031.gif”,
“:搜索”=>“表情符号/0042.gif”,
“:”(“=>”emoji/0057.gif“,
“:cry”=>“表情符号/0048.gif”,
“:思考”=>“表情符号/0052.gif”,
“:y”=>“表情符号/0053.gif”,
“:@”=>“表情符号/0052.gif”,
“:xd”=>“表情符号/0056.gif”,
“:punch”=>“emoji/0063.gif”,
“:*”=>“emoji/0064.gif”,
“:angle”=>“emoji/0065.gif”,
“:sick”=>“emoji/0013.gif”,
“:flower”=>“emoji/0067.gif”
];
如果($_POST['method']='fetch'){
$messages=$chat->fetchMessage();
如果(!空($messages)){
foreach($key=>$value的消息){?>

说:
您试图实现的目标的简化版本:

const EMOJI = [
    ":lol" => "emoji/0046.gif",
    ":d" => "emoji/0055.gif",
    ":|" => "emoji/poker.png",
    ":(" => "emoji/0005.gif",
    ":cool" => "emoji/0038.gif",
    ":shy" => "emoji/0001.gif",
    ":)" => "emoji/0003.gif",
    ":p" => "emoji/0008.gif",
    ":h" => "emoji/0031.gif",
    ":search" => "emoji/0042.gif",
    ":'(" => "emoji/0057.gif",
    ":cry" => "emoji/0048.gif",
    ":think" => "emoji/0052.gif",
    ":y" => "emoji/0053.gif",
    ":@" => "emoji/0052.gif",
    ":xd" => "emoji/0056.gif",
    ":punch" => "emoji/0063.gif",
    ":*" => "emoji/0064.gif",
    ":angle" => "emoji/0065.gif",
    ":sick" => "emoji/0013.gif",
    ":flower" => "emoji/0067.gif"
];

// Here we get keys of EMOJI array
$keys = array_keys(EMOJI);
// Escape special symbols in each key
foreach ($keys as &$k) {
    $k = str_replace(['|', '(', ')', '*'], ['\|', '\(', '\)', '\*'], $k);
}

// Test string
$str = ':flower :@ Yeah :( :*';
// Pattern
$pattern = '~(' . implode(')|(', $keys) . ')~';

// Replacing
$r = preg_replace_callback(
    $pattern,
    function($m) {
        return EMOJI[$m[0]];
        // Wrap in `img` tag
        // return '<img src="' . EMOJI[$m[0]] . '">';
    },
    $str
);

// Output `emoji/0067.gif emoji/0052.gif Yeah emoji/0005.gif emoji/0064.gif`
echo $r;    

你真的不需要
开关
语句,是吗?你可以做
$one=str_replace($match[0])。你已经检查了密钥的存在。一个函数:
preg_replace_回调
does
$match[0][0]
确实得到了匹配值吗?特殊符号,如
必须转义。@我需要该开关来检查在用户文本中检测到的符号
const EMOJI = [
    ":lol" => "emoji/0046.gif",
    ":d" => "emoji/0055.gif",
    ":|" => "emoji/poker.png",
    ":(" => "emoji/0005.gif",
    ":cool" => "emoji/0038.gif",
    ":shy" => "emoji/0001.gif",
    ":)" => "emoji/0003.gif",
    ":p" => "emoji/0008.gif",
    ":h" => "emoji/0031.gif",
    ":search" => "emoji/0042.gif",
    ":'(" => "emoji/0057.gif",
    ":cry" => "emoji/0048.gif",
    ":think" => "emoji/0052.gif",
    ":y" => "emoji/0053.gif",
    ":@" => "emoji/0052.gif",
    ":xd" => "emoji/0056.gif",
    ":punch" => "emoji/0063.gif",
    ":*" => "emoji/0064.gif",
    ":angle" => "emoji/0065.gif",
    ":sick" => "emoji/0013.gif",
    ":flower" => "emoji/0067.gif"
];
$str = ':flower :@ Yeah :( :*';
$r = strtr($str, EMOJI);
// Output `emoji/0067.gif emoji/0052.gif Yeah emoji/0005.gif emoji/0064.gif`
echo $r;