Я новичок в PHP и программировании в целом. Я работал над несколькими вещами с 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
нет.
Пожалуйста, дайте мне знать, если что-либо из этого недостаточно ясно. Это немного сбило меня с ума. Заранее благодарю вас за то, что нашли время, чтобы взглянуть на мою проблему.
Спасибо, что действительно полезно, очень цените это. – 2010-02-19 23:08:20