У меня есть два класса, 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);
Задача ещё не решена.
Других решений пока нет …