所以在将旧的开发人员Perl脚本翻译成面向对象的PHP,这个小小的Perl参考语句让我摸不着头脑我已经想了很长一段时间了,但我还没有通过谷歌或朋友找到答案。
我已经尽力写出我认为它的意思,但我不确定它是否是正确的。谁能告诉我是我弄明白了还是我搞错了?谢谢。
perl代码片段是:
!$state->{$msg->{hash}}
我相信它的意思是在OO PHP中这两个中的一个?
!$this->state[$this->msg['hash']] //or?
$this->state != $this->msg['hash']
我说得对吗?
UPDATE我被告知这是一个has引用,而不是一个数组引用,但我不确定,因为$msg->{grey}, $msg->{hash}, $msg->{domain}等都存在于同一子?
实际上,再看一眼,$state
是某种哈希引用(尽管它也可能是某个类的bless
ed对象),$state->{$msg->{hash}}
是%$state
对应于键$msg->{hash}
的值(反过来,%$msg
对应于键"hash"
的值)。
因此,假设$state
和$msg
只是散列引用(而不是特定对象),它们实际上对应于PHP中的数组(PHP中真正愚蠢的事情之一是数组和关联数组之间没有区别)。
在PHP中应该是!$state[$msg['hash']]