(PECL ds >= 1.0.0)
Ds\Map::put — Установка значения по заданному ключу
   Связывает ключ key со значением
   value, если элемент с таким ключом уже существует - его
   значение перезаписывается.
  
Замечание:
Поддерживаются значения типа object. Если объект реализует интерфейс Ds\Hashable, проверка производится путём вызова метода объекта
equals. Если объект не реализует интерфейс Ds\Hashable, объекты должны ссылаться на один и тот же экземпляр класса.
Замечание:
Вы можете использовать синтаксис массива для доступа к значениям, т.е.
$map["key"].
    Будьте осторожны при использовании синтаксиса массива. Скалярные ключи будут приведены
    к целым движком PHP. К примеру, $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);
// Использование одинаковых hashable-экземпляров несколько раз будет перезаписывать
// предыдущие значения
$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)
  }
}
