将Java哈希映射初始化器转换为PHP等价物


Converting Java hashmap initializer to PHP equivalent

只是好奇哪一种方法是正确的?

// the origional JAVA method
public void setRequestHeader(String key, String value) {
    if (this.headers == null) {
        this.headers = new HashMap<String, String>();
    }
    this.headers.put(key, value);
}

在PHP中应该解释为

吗?
Class HashMap {}
/**
 * @return this
 */
public function setRequestHeader($key, $value) {
    if ($this->headers == NULL) {
        $this->headers = new HashMap();
    }
    return $this->headers->$key = $value;
}

…或…

/**
 * @return array
 */
public function setRequestHeader($key, $value) {
    if ($this->headers == NULL) {
        $this->headers = array();
    }
    return $this->headers[$key] = $value;
}

如果关联数组像我相信的那样是正确的,是否需要在类的顶部声明这个变量?

// JAVA version
private HashMap<String, String> headers;

类似于

// PHP version
private $headers = array();

PHP中的数组有一个键值结构…

$this->headers[$key] = $value;

事实上,PHP手册说:

PHP中的数组实际上是一个有序映射。

http://php.net/manual/de/language.types.array.php

虽然,根据如何在C级实现PHP数组?,它实际上是一个HashTable,这意味着您可以依赖于O(1)查找。