@ Дмитрий, @soulmerge ваши ответы были хорошими в отношении первоначального вопроса, но при моем редактировании не хватало требования, но они указывают мне верное направление, чтобы достичь того, чего я ожидал, вот решение, с которым мы пришли сюда на работе :( работа для php> = 5.1)
public function unshift($value){
$tmp = $this->getArrayCopy();
$tmp = array($value) + $tmp;
$this->exchangeArray($tmp);
return $this;
}
эти примеры не совсем совпадают с окончательным решением, которое нам нужно, как для нашего конкретного объекта arrayObject. Мы используем данный ключ в значениях массива в качестве ключа для значений (представьте себе, что в качестве индекса каждого значения в коллекции используется rowId базы данных). давайте назовем это значение ключом, вот как выглядит структура массива:
array(
key1 => array(key=>key1,val1=>val1,val2=>val2...),
key2 => array(key=>key2,val1=>val1_2,val2=>val2_2...),
...
);
так что наше решение выглядит примерно так:
public function unshift($value){
$tmp = $this->getArrayCopy();
$tmp = array($value['key'],$value) + $tmp;
$this->exchangeArray($tmp);
return $this;
}
спасибо за ваши ответы, если вы найдете способ, который работает в php5.0, я все еще заинтересован.