Переменная PHP, выдающая ошибку «Неопределенное свойство:»

#php

#php

Вопрос:

Я создал класс с именем Functions, в котором хранятся 3 общедоступные переменные ($ var1, $ var2, $ var3). У меня есть цикл for, который создает объект этого класса, который обновляет переменные класса, а затем добавляет этот объект в массив. Однако, когда я пытаюсь получить доступ к массиву, я получаю сообщение об ошибке «Неопределенное свойство: Функции::$InsertTextHere».

Странно то, что она не выдает ошибку, если я проверяю массив в [$i] , только если я проверяю где-либо еще в массиве, который был создан на предыдущей итерации. Например, эхо-сигнал в цикле for не вызовет ошибку, однако эхо-сигналы вне цикла for будут.

Мне жаль, если это трудно понять, пожалуйста, дайте мне знать, если это так.

 class Functions{

    public $var1 = "";
    public $var2 = "";
    public $var3 = "";
}

$file <---- Puts out about 14 different lines
$fileContentArray = array();

for($i = 0; count($file) > $i; $i  ){

            $var1 = "randomstuff1: " . $i;
            $var2 = "randomstuff2: " . $i;
            $var3 = "randomstuff3: " . $i;
            $temp = new Functions();
            $temp->$var1 = $var1;
            $temp->$var2 = $var2;
            $temp->$var3 = $var3;
            $fileContentArray[] = $temp;
            echo $fileContentArray[$i]->$var3; <--- Doesn't Give Errors
    }

    echo $fileContentArray[0]->$var3; <--- Gives Errors 
    echo $fileContentArray[1]->$var3; <--- Gives Errors
    echo $fileContentArray[13]->$var3; <--- Doesn't give error, final entry in array
 

Ответ №1:

Вы не должны использовать «$» в свойствах объекта (переменная), если вам не нужны переменные переменные

 class Functions{

    public $var1 = "";
    public $var2 = "";
    public $var3 = "";
}

$file <---- Puts out about 14 different lines
$fileContentArray = array();

for($i = 0; count($file) > $i; $i  ){

            $var1 = "randomstuff1: " . $i;
            $var2 = "randomstuff2: " . $i;
            $var3 = "randomstuff3: " . $i;
            $temp = new Functions();
            $temp->var1 = $var1;
            $temp->var2 = $var2;
            $temp->var3 = $var3;
            $fileContentArray[] = $temp;
            echo $fileContentArray[$i]->$var3; <--- Doesn't Give Errors
    }

    echo $fileContentArray[0]->var3; <--- Gives Errors 
    echo $fileContentArray[1]->var3; <--- Gives Errors
    echo $fileContentArray[13]->var3; <--- Doesn't give error, final entry in array
 

Редактировать: пожалуйста, смотрите на это как на ссылки

http://www.php.net//manual/en/language.variables.variable.php

http://www.php.net//manual/en/sdo.sample.getset.php