PHP 访问 SplDoublyLinkedList 交叉函数
PHP accessing an SplDoublyLinkedList cross function
我和 php 一起工作,我 运行 陷入了困境。我需要我的双向链表可以跨函数访问。为了解决这个问题,我一直在做的是在参数中显式传递变量的地址。这种方法是有效的解决方案吗?它看起来类似于:
function foo(&$list){
$list->push('a');
$list->push('b');
$list->push('c');
$list->push('d');
$list->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO);
for ($list->rewind(); $list->valid(); $list->next()) {
echo $list->current()."\n";
}
}
此外,附带说明一下,我是否可以通过简单地执行以下操作将对象存储在链表中?
function foo(&$list){
//assuming Pie is a class with a method get_pie_flavor()
$myBar = new Pie('cherry');
$list->push($myBar);
$list->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO);
for ($list->rewind(); $list->valid(); $list->next()) {
echo $list->current()->get_pie_flavor();
//will this print 'cherry' assuming get_pie_flavor is written correctly?
}
}
旁注:是的,你完全可以做到。此外,假设列表已正确初始化,按引用传递的工作方式与上面描述的完全相同。
我和 php 一起工作,我 运行 陷入了困境。我需要我的双向链表可以跨函数访问。为了解决这个问题,我一直在做的是在参数中显式传递变量的地址。这种方法是有效的解决方案吗?它看起来类似于:
function foo(&$list){
$list->push('a');
$list->push('b');
$list->push('c');
$list->push('d');
$list->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO);
for ($list->rewind(); $list->valid(); $list->next()) {
echo $list->current()."\n";
}
}
此外,附带说明一下,我是否可以通过简单地执行以下操作将对象存储在链表中?
function foo(&$list){
//assuming Pie is a class with a method get_pie_flavor()
$myBar = new Pie('cherry');
$list->push($myBar);
$list->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO);
for ($list->rewind(); $list->valid(); $list->next()) {
echo $list->current()->get_pie_flavor();
//will this print 'cherry' assuming get_pie_flavor is written correctly?
}
}
旁注:是的,你完全可以做到。此外,假设列表已正确初始化,按引用传递的工作方式与上面描述的完全相同。