如标题所述,如何在 arrayObject
上执行 array_unshift()
,array_push()
是通过执行arrayObject->append()
但是 unshift 呢?
编辑:我忘记提及的是,在这种特殊情况下我还需要保留现有 key 。
最佳答案
API of ArrayObject没有任何功能可以直接完成此操作。您还有其他几种选择:
- 手动将每个元素移动 1,并将新值设置为索引 0(仅当您有数字索引 ArrayObject 时)。
$tmp = NULL;
for ($i = 0; $arrayObject->offsetExists($i + 1); $i++) {
$tmp = $arrayObject->offsetGet($i + 1);
$arrayObject->offsetSet($i + 1, $arrayObject->offsetGet($i));
}
$arrayObject->offsetSet($i, $tmp);
$arrayObject->offsetSet(0, $new_value);
- 编写一个派生自
ArrayObject
的类并添加一个函数prepend
(实现可以是下面的那个)。 - 提取一个数组,调用
array_unshift()
并使用修改后的数组创建一个新的ArrayObject
:
$array = $arrayObject->getArrayCopy();
array_unshift($array, $new_value);
$arrayObject->exchangeArray($array);
关于PHP 如何对 arrayObject 进行 array_unshift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6875080/