Ds\Map::put

(PECL ds >= 1.0.0)

Ds\Map::put将键与值关联

描述

public Ds\Map::put(混合 $key, 混合 $value): void

keyvalue 关联,如果存在先前的关联,则覆盖它。

注意:

类型为 对象 的键受支持。如果对象实现了 Ds\Hashable,则相等性将由对象的 equals 函数确定。如果对象未实现 Ds\Hashable,则对象必须是同一实例的引用才能被视为相等。

注意:

您还可以使用数组语法通过键关联值,例如 $map["key"] = $value

注意

使用数组语法时要小心。标量键将被引擎强制转换为整数。例如,$map["1"] 将尝试访问 int(1),而 $map->get("1") 将正确查找字符串键。

数组.

参数

key

将值关联到的键。

value

要与键关联的值。

返回值

不返回值。

示例

示例 #1 Ds\Map::put() 示例

<?php
$map
= new \Ds\Map();

$map->put("a", 1);
$map->put("b", 2);
$map->put("c", 3);

print_r($map);
?>

上面的示例将输出类似于以下内容

Ds\Map Object
(
    [0] => Ds\Pair Object
        (
            [key] => a
            [value] => 1
        )

    [1] => Ds\Pair Object
        (
            [key] => b
            [value] => 2
        )

    [2] => Ds\Pair Object
        (
            [key] => c
            [value] => 3
        )

)

示例 #2 Ds\Map::put() 使用对象作为键的示例

<?php
class HashableObject implements \Ds\Hashable
{
/**
* 用作哈希值的任意值。不定义相等性。
*/
private $value;

public function
__construct($value)
{
$this->value = $value;
}

public function
hash()
{
return
$this->value;
}

public function
equals($obj): bool
{
return
$this->value === $obj->value;
}
}

$map = new \Ds\Map();

$obj = new \ArrayIterator([]);

// 多次使用同一实例将覆盖先前的值。
$map->put($obj, 1);
$map->put($obj, 2);

// 使用同一对象的多个实例将创建新的关联。
$map->put(new \stdClass(), 3);
$map->put(new \stdClass(), 4);

// 使用相等的可哈希对象的多个实例将覆盖先前的值。
$map->put(new \HashableObject(1), 5);
$map->put(new \HashableObject(1), 6);
$map->put(new \HashableObject(2), 7);
$map->put(new \HashableObject(2), 8);

var_dump($map);
?>

上面的示例将输出类似于以下内容

object(Ds\Map)#1 (5) {
  [0]=>
  object(Ds\Pair)#7 (2) {
    ["key"]=>
    object(ArrayIterator)#2 (1) {
      ["storage":"ArrayIterator":private]=>
      array(0) {
      }
    }
    ["value"]=>
    int(2)
  }
  [1]=>
  object(Ds\Pair)#8 (2) {
    ["key"]=>
    object(stdClass)#3 (0) {
    }
    ["value"]=>
    int(3)
  }
  [2]=>
  object(Ds\Pair)#9 (2) {
    ["key"]=>
    object(stdClass)#4 (0) {
    }
    ["value"]=>
    int(4)
  }
  [3]=>
  object(Ds\Pair)#10 (2) {
    ["key"]=>
    object(HashableObject)#5 (1) {
      ["value":"HashableObject":private]=>
      int(1)
    }
    ["value"]=>
    int(6)
  }
  [4]=>
  object(Ds\Pair)#11 (2) {
    ["key"]=>
    object(HashableObject)#6 (1) {
      ["value":"HashableObject":private]=>
      int(2)
    }
    ["value"]=>
    int(8)
  }
}
添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top