oop — PHP Singlely связанный список, возвращаемый массив, сгенерированный во внешнем методе

У меня есть два класса, LinkedList а также Node,

У обоих есть функция printToArray(), Я хотел бы назвать это как продемонстрировано, и чтобы он возвращал массив.

в Node класс в printToArray (), вы можете увидеть, как я пытаюсь вернуть массив. Если я позвоню, var_dump($aNodeList)Я вижу, что массив сформирован правильно, но он просто не возвращается!

Кто-нибудь, пожалуйста, возражайте, объясняя, почему это не работает, или что я могу пойти и прочитать, чтобы узнать.

Из следующего я бы ожидал увидеть массив, подобный возвращенному;

array(4) {
[0]=>
string(4) "adam"[1]=>
string(4) "andy"}

нотабене Я не уверен, как назвать этот пост. Если кто-то может предложить улучшение, пожалуйста, сделайте.

Большое спасибо

Классы (исключая геттеры сеттеры)

class LinkedList{

private $head;

function __construct() {
$this->head = null;
}


public function addNode($data){

if( $this->head == null ){
$this->head = new Node( $data );
} else {
$this->head->addNode( new Node( $data ) );
}

}


public function printToArray(){

$aNodeList = array();

try{

// I expect the array to be returned here
var_dump($this->head->printToArray($aNodeList) );

} catch (exception $e){
echo 'Caught exception: ',  $e->getMessage(), "\n";
}
}
}


class Node{

private $data = null;
private $link;

// Node constructor
function __construct($data) {
$this->data = $data;
$this->link = null;
}

public function nextNode(){

if($this->link == null){
throw new Exception("<span style=\"color:red\">Error..etc</span>\n\n");
}
return $this->link;
}


public function addNode($newNode){

if($this->link == null){
$this->link = $newNode;
}else{
$this->nextNode()->addNode($newNode);
}

}


public function printToArray($aNodeList){

$aNodeList[] = $this->data;

if($this->link == null){

return $aNodeList;
exit;
}

$this->nextNode()->printToArray($aNodeList);

}

}

Инициировать

$oLinkList = new LinkedList;
$oLinkList->addNode('adam', null);
$oLinkList->addNode('andy', null);

var_dump($oLinkList);

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]