PHP在内爆数组时会覆盖自身

PHP在内爆数组时会覆盖自身,php,Php,所以我遇到了我见过的最奇怪的问题 所以,在一些背景知识中,我有一个类,它包含交易,有需要,有和想要交易的用户。我还有一个print方法,它以(Want | have1、have2等)的形式将其显示为一个节点,但当我内爆haves数组时,它会覆盖它 下面是一个例子: array(5) { [0]=> " string(14) "Draconnection [1]=> " string(19) "Cyber Angel Idaten [2]=> " string(12)

所以我遇到了我见过的最奇怪的问题

所以,在一些背景知识中,我有一个类,它包含交易,有需要,有和想要交易的用户。我还有一个print方法,它以(Want | have1、have2等)的形式将其显示为一个节点,但当我内爆haves数组时,它会覆盖它

下面是一个例子:

array(5) {
  [0]=>
" string(14) "Draconnection
  [1]=>
" string(19) "Cyber Angel Idaten
  [2]=>
" string(12) "Hitodenchak
  [3]=>
" string(13) "Bujingi Warg
  [4]=>
" string(10) "Rai Rider
}
-Rai RiderargIdaten
这是我的课程代码

class trade{
    protected $have;
    protected $want;
    protected $user;
    function __construct($want,$have){
        if (is_array($have)){
            $this->have = $have; // have is an array of strings
        }else{
            $this->have = [$have];
        }
        $this->want = $want; 
    }
    function getHave(){
        return $this->have;
    }
    function getWant(){
        return $this->want;
    }
    function __toString(){
        // return "(".$this->want." | ".implode(",", $this->have).")\r\n";
        // var_dump($this);
        $out=implode("-",$this->have);
        var_dump($this->have);
        return $out;
    }
}

感谢您的帮助

您在所有这些字符串的末尾都有流氓元字符,可能是裸的
\r
s。字符串数据都在那里,但是打印它的东西在打印上一行的更多数据之前,会不断得到一个返回到行首的命令


如果你有一个shell,运行
php-yourscript.php | hextump-C
查看原始输出,其中
0d
后面没有
0a
是一个裸
\r
后面没有
\n

它覆盖它是什么意思?@Adrián“覆盖”,不覆盖。你说它覆盖它是什么意思?请阅读有关如何在Stackoverflow中提问的指导原则。您输入了代码,但没有输入var_dump()。还有,到目前为止你做了什么调试?我试着用不同的方式重新打印它,var dump显示它是一个规则数组,通过覆盖,我的意思是,内爆应该执行的每个连续concat实际上都在前一行上打印。太棒了!谢谢,我通过逐行阅读修复了它,我认为问题在于我将它拆分为\n,因此它将\r的留在后面,我不知道它们会有这种效果。