在PHP中,我应该如何将SplDoublyLinkedList
转换为数组?据我所知,没有toArray
方法或类似方法。
显然我自己可以实现这一点,但我预计会有一个有效的提供方法。
答案 0 :(得分:2)
您可能不需要执行此操作:SplDoublyLinkedList
实现Iterator
,ArrayAccess
和Countable
,这意味着您几乎可以将其视为一个数组码。
如果您需要坚持,可以在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"
}
*/