【发布时间】:2022-08-21 03:19:08
【问题描述】:
-
83 号线我得到并放在下面的错误来自
UssdNode.php包含变量$item=$items[$i]声明的文件 在下面的recurseMenu方法中。 -
45号线UssdTree.php 文件中的相同错误包含 变量
$node=$this->treeMenu[$name];的声明getNode方法如下。 -
94 号线
UssdNode.php文件中的相同错误包含 变量$title=$node->getTitle();的声明recurseMenu方法如下。
我的方法或函数recurseMenu(在:UssdNode.php)通常包含菜单列表(我希望展示的) 包含在变量$title=$node->getTitle() 中:
function recurseMenu($items,$bufferLimit) {
$objectString=\"<strong>\". $this->getTitle() . \"</strong>\" . PHP_EOL;
$lastMenu=false;
if(count($items)>0) {
for($i=$this->index;$i<$bufferLimit;$i++){
$item=$items[$i];
/* echo \"<pre>\";
print_r($item);
echo \"</pre>\"; */
$num=$i+1;
//get node by name
$userSessions=$_SESSION[\'userSessions\'];
$currUserSession=$userSessions[$this->address];
$node=$currUserSession->getNode($item);
$title=$node->getTitle();
$objectString=$objectString . PHP_EOL .$num . \'. \' .$title;
}
} else {
$objectString=$objectString.PHP_EOL . \'NO DATA AVAILABLE, TRY AGAIN LATER\';
}
$lastMenu=$bufferLimit==count($items);
$objectString=$objectString . PHP_EOL . PHP_EOL . \"<strong>0. Exit</strong>\";
if($this->getParent() != \'0\'){
$objectString=$objectString . PHP_EOL . \"<strong>#. Back</strong>\";
}
if($lastMenu===false){
$rem=count($items)-$this->index;
$objectString=$objectString . PHP_EOL . \"<strong>99. Next (\".$rem.\")</strong>\";
}
return $objectString;
}
UssdTree.php 文件的getNode 方法:
function getNode($name){
$node=$this->treeMenu[$name];
return $node;
}
和当我尝试调试$this->recurseMenu($items,$bufferLimit) 在我的 toString 方法或函数中将 $title 的列表显示为字符串:
function toString(){
$objectString=\'\';
$items=$this->children;
$bufferLimit=(count($items)==0)?1:$this->getBufferLimit()+1;
echo \"<pre>\";
print_r($this->recurseMenu($items,$bufferLimit));
echo \"</pre>\";
do{
$bufferLimit-=1;
$objectString=$this->recurseMenu($items,$bufferLimit);
}while(strlen($objectString>160));
$this->index=$bufferLimit;
return $objectString;
}
问题是什么都没有显示。我收到以下错误:
注意:未定义的偏移量:3 in C:\\laragon\\www\\ussd\\ussdmenu-server-php\\UssdNode.php 在第 83 行
注意:未定义索引:in C:\\laragon\\www\\ussd\\ussdmenu-server-php\\UssdTree.php 在第 45 行
致命错误:未捕获的错误:调用成员函数 getTitle() on C:\\laragon\\www\\ussd\\ussdmenu-server-php\\UssdNode.php:94 中的 null
堆栈跟踪:
#0 C:\\laragon\\www\\ussd\\ussdmenu-server-php\\UssdNode.php(59): UssdNode->recurseMenu(Array, 4)
#1 C:\\laragon\\www\\ussd\\ussdmenu-server-php\\UssdUserSession.php(77): UssdNode->toString()
#2 C:\\laragon\\www\\ussd\\ussdmenu-server-php\\UssdReceiver.php(51): UssdUserSession->fetchDisplay()
#3 C:\\laragon\\www\\ussd\\ussdmenu-server-php\\UssdReceiver.php(43): UssdReceiver->handleChildBearingNode(\'paybill\', \'0772247408\', \'1234567\')
#4 C:\\laragon\\www\\ussd\\ussdmenu-server-php\\UssdReceiver.php(15): UssdReceiver->handleContinuingRequests(\'0772247408\', \'4\', \'1234567\ ')
#5 C:\\laragon\\www\\ussd\\receiver.php(28): UssdReceiver->onMessage(Array)
#6 C:\\laragon\\www\\ussd\\receiver.php(36): MyUssdReceiver::process(Array)
#7 {main} 在第 94 行的 C:\\laragon\\www\\ussd\\ussdmenu-server-php\\UssdNode.php 中抛出网址:http://localhost/ussd/receiver.php MSISDN:
如何在下面的recurseMenu方法中正确显示变量
$title=$node->getTitle();所代表的菜单列表?帮我解决这个错误。
-
getBufferLimit()与$items的长度有何关系? -
在继续前进之前,您需要解决问题。第一个错误
undefined offset,没有$items[3]。在实际尝试使用它之前,您需要确保偏移量存在。这可能是一个级联修复,但唯一知道的方法是测试。var_dump($items);看看它实际包含什么以及有什么索引。 -
一旦尝试访问
$items[$i]时出错,所有其他错误都会随之而来。
标签: php