문제

Just curious which way is correct?

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

should this be interpreted in PHP as

Class HashMap {}

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

....or....

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

if the associative array is correct like I believe, would there be a need for declaring this variable at the top of the class?

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

Would be akin to

// PHP version
private $headers = array();
도움이 되었습니까?

해결책

Arrays in PHP have a key-value structure...thus is correct:

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

In fact, the PHP manual says:

An array in PHP is actually an ordered map.

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

Although, according to How is the PHP array implemented on the C level? , it is actually a HashTable, which means you can rely on the O(1) lookup.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top