#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