2010-04-23 13 views
6

otrzymuję ten błąd z mojego skryptu:

[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/ 

Oto kod, który wywołuje błąd:

<?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"; 
} 
+1

próbowałeś zmienić nazwę $ to do czegoś innego. – corn3lius

Odpowiedz

22

$this to predefiniowana zmienna w PHP.

Oto odniesienie w podręczniku PHP: Classes and Objects: The Basics. Opisuje, w jaki sposób, wewnątrz metody, $ this wskazuje na "obiekt", na którym operuje. Jest jednak nadal zarezerwowany poza metodą.

Zmień identyfikator na inne słowo.

11

$this jest specjalną zmienną php. Jeśli ten kod ma miejsce wewnątrz klasy, $this jest odniesieniem do obiektu, na który metoda jest wywoływana. Nie możesz przypisać nowej wartości do klasy $this. Jest to ograniczenie PHP, którego nie można również przypisać do zmiennej o nazwie $this poza klasą, gdzie w przeciwnym razie byłby do tego odpowiedni.

Wierzę, że to było poprawne w PHP4, ale od PHP5 będziesz musiał wybrać nową nazwę zmiennej.

+0

Cóż, nie jest to w klasie, ale dzięki, tak samo jak i temu powyżej. Dostaje czek, ponieważ najwyraźniej nie działa również poza klasą. –

+0

Nie, jak powiedziałem, jest to ograniczenie PHP. Nie możesz przypisać '$ this' w żadnym kontekście, w ramach naszej zewnętrznej metody klasy. – meagar

+0

Cóż, to przyszło później. Drugi facet zrobił to dobrze za pierwszym razem ;-) Dzięki, w każdym razie –

3

Nie jestem ekspertem PHP, ale myślę $this odnosi się do bieżącego obiektu, więc jeśli ustawisz this do null, spróbuj ustawić bieżący obiekt do niczego, wich nie może pracować.

1

można przypisać $this wartość o zmiennej zmiennej

$name = 'this'; 
$$name = 'stack'; 
echo $this; 
// this will result stack 
Powiązane problemy