str_replace number shenanigans

时间:2013-09-06 03:01:10

标签: php str-replace

好吧,我现在很难过。

我有这段代码:

ECHO $CHECKVOTINGROW[VOTECHOICES];  
ECHO $STRREPLACECHECKVOTECHOICES = STR_REPLACE("U","",$CHECKVOTINGROW[VOTECHOICES])

输出UUUSSS1

因此UUUSSS中U的字符串替换是返回1而不是SSS。

我错过了什么愚蠢的事情?

编辑:

$ CHECKVOTINGROW [VOTECHOICES]原始价值是UUUSSS

我将此标记为删除,谢谢你的帮助。必须是其他地方造成问题的问题。我不会让人们接受更多的解析代码。再次感谢。

2 个答案:

答案 0 :(得分:0)

首先,您要回显赋值操作的结果:

ECHO $STRREPLACECHECKVOTECHOICES = STR_REPLACE("U","",$CHECKVOTINGROW[VOTECHOICES])

你想要这个:

$STRREPLACECHECKVOTECHOICES = STR_REPLACE("U","",$CHECKVOTINGROW[VOTECHOICES]);
ECHO $STRREPLACECHECKVOTECHOICES;

回显赋值操作的结果输出已分配的值。您提供的输出与该命令的实际输出应该是:

不一致
UUUSSSSSSSS

检查您的代码。您是否将==误导为=?如果equals操作成功(True),则结果可能会转换为1(1为真,0为假),从而产生输出UUUSSS1。仅供参考:我的PHP似乎没有将True投射到1,但您可能会这样做。

PS:那种编码风格伤害了我的眼睛。

答案 1 :(得分:0)

以下作品:

<?php
$ch="UUUSSS";
echo $ch."\n";
$STR = STR_REPLACE("U","",$ch);
echo $STR."\n";
?>

它产生

UUUSSS
SSS

正如所料。

如上所述,您的代码正在回应一项任务......不确定这是一个好主意(尽管这不是非法的)。保持可读性 - 这通常是个好主意。 “每行代码一件事。”

编辑我确实找到了生成输出的方法:

<?php
$ch="UUUSSS";
echo $ch;
$STR = "SSS";
echo $STR == STR_REPLACE("U","",$ch);
echo "\n";
?>

这准确地生成

UUUSSS1

正如你所观察到的那样。所以问题仍然存在:你确定给你带来麻烦的代码是编写的代码吗?

注意 - 在示例中使用短变量名称通常是个好主意......