PHP对象/变量错误
免责声明:我不熟悉面向对象的PHP,而且我对该语言一般都很糟糕 因此,我在文件class_lib.php中有一个名为Page的类,我创建了这个变量,并编写了一个while/for循环,当其设置为:PHP对象/变量错误,php,Php,免责声明:我不熟悉面向对象的PHP,而且我对该语言一般都很糟糕 因此,我在文件class_lib.php中有一个名为Page的类,我创建了这个变量,并编写了一个while/for循环,当其设置为: public $extra= ""; if (isset($this->extra)) { echo "<table id=\"tab\">"; while (list($counter) = each($this->$extra)) { for ($i=0;$i<
public $extra= "";
if (isset($this->extra)) {
echo "<table id=\"tab\">";
while (list($counter) = each($this->$extra)) {
for ($i=0;$i<3;$i++) {
echo "<tr class=\"tl\">";
echo "<td>$counter[$i]</td>";
echo "</tr>";
}
}
}
我得到的错误是:
注意:未定义的变量:C:\wamp\www\test\class\u lib.php第47行的额外变量
……和:
致命错误:无法访问第47行C:\wamp\www\test\class\u lib.php中的空属性
下面是完整的class_lib.php文件(如果需要):
…和index.php:
我希望我在那里提供了足够的信息-我将感谢任何帮助
$this->$extra
应该是:
$this->extra
应该是:
$this->extra
您键入了错误的变量:
while (list($counter) = each($this->$extra)) {
应该是
while (list($counter) = each($this->extra)) {
查看$this->extra您输入的变量有误:
while (list($counter) = each($this->$extra)) {
应该是
while (list($counter) = each($this->extra)) {
查看$this->extra$counter获取索引。
你必须把
while (list($i,$counter) = each($this->extra))
或
这是因为每个都返回键值对:
返回数组中的当前键和值对
$counter获取索引。
你必须把
while (list($i,$counter) = each($this->extra))
或
这是因为每个都返回键值对:
返回数组中的当前键和值对
除了其他人写的关于$this->extra的内容外,您还错误地使用了list和$counter 根据,列表用于从一个数组对象分配多个变量 这一行的问题在于:
list($counter) = each($this->extra)
发生的情况是,每个从$this->额外数据中提取下一个键->值对。然后,list用配对中的第一个值(键值)填充$counter。由于$counter现在保存键的int值,因此它不能用作数组,并且会自动失败,并回显一个空字符
试着像这样重新安排它:
echo '<table id="tab">';
foreach( $this->extra as $value) // ignores the Key and just gets the Value as $row
{
list( $number, $name, $length ) = $value; //populates $number, $name, $length from $row
echo '<tr class="tl">';
echo '<td>' . $number . '</td>';
echo '<td>' . $name. '</td>';
echo '<td>' . $length . '</td>';
echo '</tr>';
}
echo '</table>';
如果需要键值,您也可以使用foreach$this->extra as$key=>value。除了其他人写的关于$this->extra的内容外,您还错误地使用了list和$counter 根据,列表用于从一个数组对象分配多个变量 这一行的问题在于:
list($counter) = each($this->extra)
发生的情况是,每个从$this->额外数据中提取下一个键->值对。然后,list用配对中的第一个值(键值)填充$counter。由于$counter现在保存键的int值,因此它不能用作数组,并且会自动失败,并回显一个空字符
试着像这样重新安排它:
echo '<table id="tab">';
foreach( $this->extra as $value) // ignores the Key and just gets the Value as $row
{
list( $number, $name, $length ) = $value; //populates $number, $name, $length from $row
echo '<tr class="tl">';
echo '<td>' . $number . '</td>';
echo '<td>' . $name. '</td>';
echo '<td>' . $length . '</td>';
echo '</tr>';
}
echo '</table>';
如果需要键值,也可以使用foreach$this->extra as$key=>value。好的,谢谢,这样就消除了错误,现在我得到了一个宽度非常小的表,约为2px,其中没有任何值。一定是循环出了什么问题…根据您发布的代码,您试图在数据填充之前访问$this->extra。您需要先插入数据数组,然后再访问它。好的,谢谢,这消除了错误,现在我得到一个非常小的表,宽度约为2px,其中没有任何值。一定是循环出了什么问题…根据您发布的代码,您试图在数据填充之前访问$this->extra。您需要先插入数据数组,然后再访问它。好的,谢谢,这消除了错误,现在我得到一个非常小的表,宽度约为2px,其中没有任何值。一定是循环出了问题……但有一件事:现在,在没有表且没有重新设置$extra的其他页面上,第47行的C:\wamp\www\test\class_lib.php中为foreach提供的错误:警告:无效参数。有什么办法可以解决这个问题吗?我可以添加一个else并让它在不插入任何额外的$extra的情况下继续吗?将if is set$this->extra更改为if count$this->extra哦,这很好-我刚刚从类_lib.php中删除了$extra变量,以便只在需要设置它的页面上设置它。我想您必须创建变量,然后覆盖它,您会看到。感谢您的帮助:好的,谢谢,这消除了错误,现在我得到了一个宽度非常小的表,大约2px,其中没有任何值。一定是循环出了问题……但有一件事:现在,在没有表且没有重新设置$extra的其他页面上,第47行的C:\wamp\www\test\class_lib.php中为foreach提供的错误:警告:无效参数。有什么办法可以解决这个问题吗?我可以添加一个else并让它在不插入任何额外的$extra的情况下继续吗?将if is set$this->extra更改为if count$this->extra哦,这很好-我刚刚从类_lib.php中删除了$extra变量,以便只在需要设置它的页面上设置它。我想您必须创建变量,然后覆盖它,您会看到。感谢您的帮助: