PHP Неустранимая ошибка: нельзя повторно назначить $ this

Я получаю эту ошибку из своего сценария:

[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"; } 

Solutions Collecting From Web of "PHP Неустранимая ошибка: нельзя повторно назначить $ this"

$this предопределенная переменная в PHP.

Вот ссылка в руководстве PHP: Классы и объекты: Основы . В нем описывается, как внутри метода $ указывает на «этот объект», над которым работает. Тем не менее, он по-прежнему сохраняется вне метода.

Измените идентификатор на другое слово.

$this специальная переменная в php. Если этот код происходит внутри класса, $this ссылка на объект, на который вызывается метод. Вы не можете назначить новое значение $this внутри класса. Это ограничение PHP, которое вы также не можете присвоить переменной с именем $this вне класса, где в противном случае это было бы справедливо для этого.

Я считаю, что это было действительно в PHP4, но с PHP5 вам нужно будет выбрать новое имя переменной.

Я не специалист по PHP, но я думаю, что $this относится к текущему объекту, поэтому, если вы установите для него значение null , вы пытаетесь установить текущий объект в никуда, который не может работать.

Вы можете переназначить $this значение переменной переменной

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