SplDoublyLinkedList到数组

时间:2014-01-29 17:44:04

标签: php arrays linked-list type-conversion

在PHP中,我应该如何将SplDoublyLinkedList转换为数组?据我所知,没有toArray方法或类似方法。

显然我自己可以实现这一点,但我预计会有一个有效的提供方法。

1 个答案:

答案 0 :(得分:2)

您可能不需要执行此操作:SplDoublyLinkedList实现IteratorArrayAccessCountable,这意味着您几乎可以将其视为一个数组码。

如果您需要坚持,可以在serialize中使用。除非您调用在真实数组上仅运行 的内置函数,否则不应该将其实际转换为数组。

如果绝对必须将其转换为真实数组,您可以利用foreach使用迭代器:

$l = new SplDoublyLinkedList();
$l->push('a');
$l->push('b');
$l->push('c');
$l->unshift('d');
var_dump($l);
/*
class SplDoublyLinkedList#1 (2) {
  private $flags =>
  int(0)
  private $dllist =>
  array(4) {
    [0] =>
    string(1) "d"
    [1] =>
    string(1) "a"
    [2] =>
    string(1) "b"
    [3] =>
    string(1) "c"
  }
}
*/

$c = array();
foreach($l as $k => $v) { $c[$k] = $v; }
var_dump($c);
/*
array(4) {
  [0] =>
  string(1) "d"
  [1] =>
  string(1) "a"
  [2] =>
  string(1) "b"
  [3] =>
  string(1) "c"
}
*/