Php 为什么这个字符串替换函数不影响数字?

Php 为什么这个字符串替换函数不影响数字?,php,string,Php,String,我有以下代码: $badChars = array("W", "X", "Y", "0"); $goodChars = array("A", "B", "C", "1"); $string = str_replace ($badChars, $goodChars, $string); 当我查看$string时,我可以看到W、X和Y已经如所希望的那样被A、B和C所取代。但是$string仍然包含零 我认为这可能是某种字符串/整数混淆,因此我也尝试: $badChars = array("W",

我有以下代码:

$badChars = array("W", "X", "Y", "0");
$goodChars = array("A", "B", "C", "1");
$string = str_replace ($badChars, $goodChars, $string);
当我查看
$string
时,我可以看到W、X和Y已经如所希望的那样被A、B和C所取代。但是
$string
仍然包含零

我认为这可能是某种字符串/整数混淆,因此我也尝试:

$badChars = array("W", "X", "Y", 0);
$goodChars = array("A", "B", "C", 1);
。。。但这没什么区别


为什么str_replace()会忽略这些数字?

我很惊讶它能以你的方式工作(或者,因为你编辑了这个问题,所以它是一个不返回的str_replace($badChars,$goodChars,$string);)
str_replace
返回修改后的字符串:

$string = str_replace ($badChars, $goodChars, $string);
除此之外,代码还可以。使用测试代码:

<?php
    $string = "WAIT XEROX YETI 1234567890";
    $badChars = array("W", "X", "Y", "0");
    $goodChars = array("A", "B", "C", "1");
    $string = str_replace ($badChars, $goodChars, $string);
    var_dump($string);
?>

我很惊讶它能以你所拥有的方式工作(或者,因为你编辑了这个问题,所以它是一个不返回的
stru替换($badChars,$goodChars,$string);
str_replace
返回修改后的字符串:

$string = str_replace ($badChars, $goodChars, $string);
除此之外,代码还可以。使用测试代码:

<?php
    $string = "WAIT XEROX YETI 1234567890";
    $badChars = array("W", "X", "Y", "0");
    $goodChars = array("A", "B", "C", "1");
    $string = str_replace ($badChars, $goodChars, $string);
    var_dump($string);
?>
它很好用

很好用

此代码的结果是:ABC1 ABC1 lol

因此,您的代码似乎是正确的,唯一的缺陷可能是replace函数本身返回一个字符串,而不是一个mutator方法。您可能需要访问以下内容:

$val = str_replace ($badChars, $goodChars, "WXY0 ABC1 lol");
此代码的结果是:ABC1 ABC1 lol

因此,您的代码似乎是正确的,唯一的缺陷可能是replace函数本身返回一个字符串,而不是一个mutator方法。您可能需要访问以下内容:

$val = str_replace ($badChars, $goodChars, "WXY0 ABC1 lol");

让我提醒您,
str_replace()
不会修改原始字符串,但会返回一个修改后的字符串:

<?php
$badChars = array("W", "X", "Y", "0");
$goodChars = array("A", "B", "C", "1");
echo str_replace ($badChars, $goodChars, 'WXY0');

让我提醒您,
str_replace()
不会修改原始字符串,但会返回修改后的字符串:

<?php
$badChars = array("W", "X", "Y", "0");
$goodChars = array("A", "B", "C", "1");
echo str_replace ($badChars, $goodChars, 'WXY0');

这是您问题中的一个输入错误还是您的代码有缺陷?在第一个数组中的W之前缺少
。无法复制。请显示一个完整的(非)工作示例。对我有效…您试图在其上运行函数的
$string
是什么?现在我感到困惑。我将代码更改为使用str_ireplace(),它起作用了。我觉得很奇怪。所以我把它改回stru_replace,现在它也起作用了。:-/我不知道怎么称呼这个。我发誓这在过去一个小时左右都很奇怪……但是给出了答案,可能是我无意中更正了一些打字错误…?我是将其中一个答案标记为正确还是将问题关闭为“太本地化?什么是正确的协议?戴夫,我会投票选择太本地化,因为“这个问题不太可能帮助任何未来的访客;它只与一个小的地理区域、一个特定的时间点或一个不适用于全球互联网受众的非常狭窄的情况相关”包括“非常狭窄的情况”,即PEBKAC:-)这是您的问题中的一个打字错误还是您的代码有缺陷?缺少
在第一个数组中的W之前。无法复制。请给出一个完整的(非)工作示例。为我工作。。。您试图运行函数的
$string
是什么?现在我很困惑。我将代码更改为使用str_ireplace(),并且成功了。我觉得很奇怪。所以我把它改回str_replace,现在也可以了我不知道怎么称呼这个。我发誓这在过去的一个小时里很奇怪。。。但是给出了答案,也许是我无意中纠正了一些打字错误。。。?我是将其中一个答案标记为正确还是将问题结尾标记为“过于本地化”?什么是正确的协议?Dave,我将投票选择过于本地化的结束,因为“这个问题不太可能帮助任何未来的访问者;它只与一个小的地理区域、一个特定的时间点或一个不适用于全世界互联网受众的非常狭窄的情况相关。”包括“非常狭窄的情况”,即PEBKAC:-)