2013-02-28 3 views
1

Извините, ребята, я читаю и просматриваю через Интернет, и я не могу найти решение для этого :(. Если вы можете мне помочь :) Спасибо.Неопределенная переменная: позиция

Если у меня твердый код позиция, тогда он хорошо работает. Я уже пробовал это по-разному ...

P.S. Мне нужно создать какую-то галерею изображений ajax для упражнений :) Предполагаю, что позиция должна быть в одноэлементном/статическом классе, я думаю. Мне еще не удалось проверить этот класс, но я думаю, что это будет работать только для первого и последнего изображения всегда :) (в java-коде это было бы очень легко сделать :)).

Ошибка: Примечание: Undefined переменной: положение в D: \ Wamp \ WWW \ тест \ gethint.php на линии 11

<?php 

class Index { 
    private $position=1; 

    public function next(){ 
     return $position++;; 
    } 

    public function prev(){ 
     return $position--; 
    } 

    public function reset(){ 
     $position=1; 
     return $position; 
    } 
} 

$action=$_REQUEST["action"]; 
    $index = 0; 

if($action!=1){ 
    $index=Index::prev(); 
} else { 
    $index=Index::next(); 
} 

if($index < 1){ 
    $index=7; 
} 
if($index > 7){ 
    $index=1; 
} 

    $response="<img border=\"0\" src=\"".$index.".jpg\" alt=\"".$index."\" width=\"500\" height=\"334\">"; 

echo $response; 
?> 
+0

линии 11 или 7 зависит, какой канал связи я нажимаю. Я думаю, что в сбросе то же самое (еще не тестировал). – ojc

ответ

0

изменение этой линии

return $position++;; 

в

return $position++; // extra ; 

и класс доступа переменной, как этот

$this->position++; // not $position 

для создания статической переменной Используйте ключевое слово static

private static $position=1; 

для доступа к статической переменной Использовать

self::$position; 

изменения этого

if($action!=1){ 
    $index=Index::prev(); 
} else { 
    $index=Index::next(); 
} 

в

$in = new Index(); 
if($action!=1){ 
    $index= $in->prev(); 
} else { 
    $index= $in->next(); 
} 
+0

ТНХ за помощью :) – ojc

+0

да, но не будет работать правильно :(Я сделал то же самое :(. Может быть, мне задницу index.php, а? – ojc

+0

@ojc см отредактированный ответ. –

0
class Index { 
    private $position=1; 

    public function next(){ 
     return $this->position++; 
    } 

    public function prev(){ 
     return $this->position--; 
    } 

    public function reset(){ 
     $this->position=1; 
     return $this->position; 
    } 
} 

Вы должны получить переменную класса, не локальная переменная;)

И метод сброса работал, потому что вы должны установить локальную переменную в 1, а затем вернуть ее, в обоих других методах переменная $ position будет не определена.

+0

ничего себе это было быстро. – ojc

+0

Могу ли я напрямую обращаться к переменным в классах, например, в java? Нужно ли всегда использовать ++ this ++ ключевое слово? – ojc

+0

@ojc Да, вы должны использовать ключевое слово '$ this' для каждой переменной класса в' PHP'. Но я думаю, что в java вам нужно использовать ключевое слово this для доступа к переменной класса. –

0

У вас есть эта $position++;; в следующей функции для Index класса, который должен быть $position++; и доступа класса, вы должны использовать $ this.

Поэтому использовать его в качестве $this->position++;

+0

Thx ребята, это работает :) и теперь у меня есть следующая проблема, вроде я сказал, что мне нужно будет использовать одноэлементный шаблон или статический :) – ojc

Смежные вопросы