str_replace与数组一起使用时在PHP中错误地替换单个字符串

str_replace与数组一起使用时在PHP中错误地替换单个字符串,php,str-replace,Php,Str Replace,请原谅我对这个问题的措辞。这可能是因为stru\u replace正在按预期替换这些字符,而我没有正确理解发生的事情的基本原理。然而,我的问题是 我试图使用str_replace在PHP中创建一个函数,用完整版本的名称替换缩写名称。问题是,在某些情况下,缩写是单字母缩写,这会导致问题。例如: <?php //Abreviated Set Names function changer($string_to_replace){ $ab_name = array('A','APP',

请原谅我对这个问题的措辞。这可能是因为
stru\u replace
正在按预期替换这些字符,而我没有正确理解发生的事情的基本原理。然而,我的问题是

我试图使用
str_replace
在PHP中创建一个函数,用完整版本的名称替换缩写名称。问题是,在某些情况下,缩写是单字母缩写,这会导致问题。例如:

<?php
//Abreviated Set Names
function changer($string_to_replace){
    $ab_name   = array('A','APP','ANG',);
    $full_name = array('Alley Cat', 'Apples', 'Angela');
    return str_replace($ab_name, $full_name, $string_to_replace);
}

echo changer('APP');
?>

当我调用这个函数并传递它时,我将返回
“Alley Cat”
,这就是我希望它执行的操作。但是,如果我将其传递给
“APP”
,而不是返回
“Apples”
,它将返回
“Alley CatPP”
。显然不是我想要的。我已经四处搜索了很多次,但没有找到解决这个问题的方法。任何帮助都将不胜感激

问候 酸杰克(和其他人)

谢谢你的回答。我还发现这段代码在测试后运行得非常好

<?php
$state = 'AVR';
echo convert_state($state);

function convert_state($key) {
    $a2s = array( 
        'A'=>'Apples',
        'AVR'=>'Abby Road'
    );
    $array = (strlen($key) <=3 ? $a2s : array_flip($a2s));
    return $array[$key];
}
?>


str_replacestr_replace为什么能在数组上正常工作,或者根本不能工作?@adeneo,因为它被记录为与数组一起工作。用户我从一个类似的函数中得到了这个函数的想法,一位绅士曾经用全名替换状态缩写。不过,状态缩写从来都不是由单个字符组成的。您的输入表示将
a
替换为
Alley Cat
,这就是它所做的。另外请注意,$array变量可以通过更改以下值来修改,以适应不同的字符串长度: