Я новичок в PHP и программировании в целом. Я работал над несколькими вещами с PHP, которые требовали от меня создания классов, что было хорошо, за исключением того, что я не могу заставить свои методы класса работать с массивами, которые являются свойствами класса. Должно быть, я делаю что-то в корне неверное, потому что, похоже, это не работает независимо от проекта.
Вот пример, который я только что написал (я подумал, что будет проще опубликовать короткий и простой пример, чем код моего реального проекта, который довольно длинный и сложный).
class Test {
public $testArray;
public $testInt;
public function __construct() {
$this->testArray = array();
for ($i=1; $i<=20; $i++) {
$this->testArray[] = array(1, 2);
}
$this->testInt = 4;
}
public function testf() {
$this->testInt += 1;
foreach ($this->testArray as $n) {
$n[] = 3;
}
}
}
Если я добавлю немного кода в конце, чтобы получить распечатку происходящего:
$obj = new Test;
echo 'Before function call:';
echo '<br />testArray:<br />';
foreach ($obj->testArray as $n) {
print_r($n);
echo '<br />';
}
echo '<br />testInt: ';
echo $obj->testInt;
echo '<br />';
echo '<br />';
echo '<br />';
$obj->testf();
echo 'After function call:';
echo '<br />testArray:<br />';
foreach ($obj->testArray as $n) {
print_r($n);
echo '<br />';
}
echo '<br />testInt: ';
echo $obj->testInt;
echo '<br />';
Тогда в итоге вы видите, что после вызова функции переменная testInt
меняется, а testArray
- нет.
Пожалуйста, дайте мне знать, если этого недостаточно. Это сводило меня с ума на некоторое время. Заранее спасибо, что нашли время взглянуть на мою проблему.