Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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致命错误:无法重新分配$this_Php - Fatal编程技术网

PHP致命错误:无法重新分配$this

PHP致命错误:无法重新分配$this,php,Php,我从脚本中获得此错误: [Fri Apr 23 10:57:42 2010] [error] [client 10.0.0.1] PHP Fatal error: Cannot re-assign $this in C:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\abp\\fol\\test.php on line 27, referer: http://abp.bhc.com/fol/ 以下是产生错误的代码

我从脚本中获得此错误:

[Fri Apr 23 10:57:42 2010] [error] [client 10.0.0.1] PHP Fatal error:  Cannot re-assign $this in C:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\abp\\fol\\test.php on line 27, referer: http://abp.bhc.com/fol/
以下是产生错误的代码:

<?php
$voiceboxes = array(
    '141133'    => array(
        'title' => 'Title',
        '1'     => array(
            'Title' => 'Title2',
            'Link'  => 'http://...',
        ),
        '12'    => array(
            'Title' => 'Title3',
            'Link'  => 'http://...',
        )
    ),
    '1070453'   => array(
        'title' => 'Title4',
        '1'     => array(
            'Title' => 'Title5',
            'Link'  => 'http://...',
        )
    )
);
$last = 0;
//$this = 0;
echo "<ol>\n";
foreach ($voiceboxes as $key => $value) {
    $last = 0;
    $this = null; //Error is thrown here, Line 27
    //$voiceboxes[$key]['title']
    echo "<ol>\n";
    foreach ($value as $key2 => $value2) {
        if ($key2 == 'title') {
            echo "<li>$value2</li>\n";
        } else {
            $this = (int) $key2;
            if ($this == $last + 1) {
                echo '<li>';
            } else { '<li value="' . $key2 . '">';}
            $last = $key2;
            echo $voiceboxes[$key][$key2]['Title'] . "<br/>" . $voiceboxes[$key][$key2]['Link'] . '</li>' . "\n";
        }
    }
    echo "</ol>\n";
}

$this
是php中的一个特殊变量。如果此代码发生在类中,
$this
是对调用该方法的对象的引用。不能在类内部为
$this
分配新值。PHP的一个限制是,您也不能在类之外指定名为
$this
的变量,否则这样做是有效的


我相信这在PHP4中是有效的,但是从PHP5开始,您必须选择一个新的变量名。

$this
是PHP中预定义的变量

以下是PHP手册中的参考:。它描述了在方法中,$this如何指向正在操作的“this object”。不过,它仍然保留在方法之外


将标识符更改为另一个单词。

我不是真正的PHP专家,但我认为
$this
指的是当前对象,因此如果将
this
设置为
null
,则尝试将当前对象设置为nothing,这无法工作。

可以通过变量重新分配
$this

$name = 'this';
$$name = 'stack';
echo $this;
// this will result stack

您是否尝试将$this重命名为其他名称。嗯,它不在类中,但无论如何,谢谢您,也感谢上面的一个。但是,他得到了检查,因为它显然在类之外也不起作用。您不能在任何上下文中,在我们的类外方法内部,分配给
$this
。好吧,这是后来才出现的。另一个人第一次做对了;-)谢谢,不管怎样,事实上,直到我留下评论并刷新页面后,你才添加它。+1用于解释为什么你的代码中可能有它,即在PHP4中有效。此黑客很难回答这个问题!在类构造函数中不起作用:/。但这完全符合PHP的精神——破解这些黑客+