Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP对象/变量错误_Php - Fatal编程技术网

PHP对象/变量错误

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<

免责声明:我不熟悉面向对象的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<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变量,以便只在需要设置它的页面上设置它。我想您必须创建变量,然后覆盖它,您会看到。感谢您的帮助: