PHP 如何对 arrayObject 进行 array_unshift

标签 php spl arrayobject

如标题所述,如何在 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/

相关文章:

php - mySQL 加入哪里?

PHP 自动加载子文件夹

php - SplObjectStorage 不适用于 String,怎么办?

javascript - 如何使用 else 函数设置未登录用户的登录链接?

php - 插入记录时mysql时间戳显示零

使用 CachingIterator 的 PHP 数组到字符串的转换通知

javascript - 如何在 php 中获取包含一个数组对象的 serializableArray jQuery?

javascript - 插入数组对象的中间/第一个后更改数组对象的键

php - 通过扩展 ArrayObject 让对象循环为带有 foreach() 的数组

javascript - 在级联下拉列表中失败,但首先使用 jquery Ajax 可以正常工作