在破坏数组时,PHP会覆盖自己

时间:2017-07-06 18:09:28

标签: php

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

所以,有些背景,我有一个包含交易,有需求,有需要和想要交易的用户的类。我也有一个print方法,它以(Want | have1,have2等等)的形式显示它,但当我内爆hass数组时,它会覆盖它。

以下是一个例子:

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;
    }
}

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

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

如果你有一个shell方便的运行php yourscript.php | hexdump -C来查看0d未跟0a后面的原始输出是\r,那么\n后面没有class C: def __init__ (self): self.aTime = 2 async def g (self, waw, asio): print ('g0') await waw (self.aTime, asio) print ('g1') 1}}。