我有一个PHP课程。在课堂内我有一个名为setContent()
的函数。在里面我有多个变量值。我已经获取了这些变量值并将它们存储在一个数组中。在另一个函数中,我希望将所有变量存储在一个数组中。所以我的代码就像这样
class foo{
public function setContent() {
global $my_array;
$var1 = 'variable 1';
$var2 = 'variable 2';
$var3 = 'variable 3';
$var4 = 'variable 4';
$var5 = 'variable 5';
new_array = array();
$my_array = array_push($new_array, $var1, $var2, $var3, $var4, $var5);
}
public function getContent() {
global $my_array;
var_dump($my_array);
}
}
但是当我在做var_dump($my_array)
时。它显示NULL
。所以有人可以告诉我如何将这些变量放在数组中的其他函数中。任何帮助和建议都会非常明显。
答案 0 :(得分:5)
您可以通过在类中声明它来设置要使用的数组。然后,您只需引用$this
而不是全局变量。
class foo{
public $my_array; # new bit here
public function setContent() {
# global $my_array; take this bit out
$var1 = 'variable 1';
$var2 = 'variable 2';
$var3 = 'variable 3';
$var4 = 'variable 4';
$var5 = 'variable 5';
$new_array = array();
$this->my_array = array_push($new_array, $var1, $var2, $var3, $var4, $var5);
}
public function getContent() {
var_dump($this->my_array);
}
}
因为数组现在是foo
对象的一部分,所以我们现在可以一直引用它。如果您要公开它,您可以执行以下操作:
$f = new foo();
print_r($f->my_array);
答案 1 :(得分:1)
为什么不像这样实现你的类:
class foo{
public $my_array = array();
public function setContent() {
$var1 = 'variable 1';
$var2 = 'variable 2';
$var3 = 'variable 3';
$var4 = 'variable 4';
$var5 = 'variable 5';
array_push($this->my_array, $var1, $var2, $var3, $var4, $var5);
}
public function getContent() {
var_dump($this->my_array);
}
}
我认为在OOP中使用全局变量是一种不好的做法。
实际上我建议重写你的getContent函数:
public function getContent() {
return $this->my_array;
}
并实现你的对象:
$my_object = new foo();
$foo->setContent();
var_dump ($foo->getContent());
我将提高类的可重用性
答案 2 :(得分:-1)
http://php.net/manual/fr/function.array-push.php
你要写
array_push($new_array, $var1, $var2, $var3, $var4, $var5);
因为array_push
返回数组的长度(整数,而不是数组!)。所以你不能写:
$myarray = array_push($myarray, $var1, $var2, $var3, $var4, $var5);