将新元素传递给类中的数组并返回其值

时间:2017-01-09 16:00:33

标签: php arrays function class variables

class Item 
{
private $_SomeArray = array();
private $elementOfanArray;

function __construct()
{
    $this->_SomeArray[0]="default message";
    $this->elementOfanArray=0;    //I am trying to assign empty value to an var
}

public function getArray()
{
    return $this->SomeArray;  //function returning whole array
}
public function setArray(elementOfanArray)  //function for adding new element to an array and checking if not empty
{
if(!elementOfanArray)
    {

    }
else
    {
        array_push($_SomeArray, elementOfanArray);

        $elementOfanArray = 0; //I am trying to assign value after addding element to an array
    }
}


function __destruct(){
    $this->_SomeArray;
    $this->elementOfanArray;
}
}

这是我的代码,但现在我想知道使用“array_push”是否是正确的选择,因为它将被调用大约20次。 函数调用的数量不是常数,所以如果值会更少..我想从数组中删除它们或者只是立即转储它们。

我得到的另一个问题是我应该如何从这个类中获取我的元素,有没有办法让整个数组的值超出这个类的范围?

我的写作是否正确?

1 个答案:

答案 0 :(得分:0)

回答关于使用array_push的第一个问题:您使用它的次数并不重要,它可以将项目添加到数组中。所以用吧!

你也可以使用这种语法$array[] = 'value',它也可以做同样的事情。

一些注意事项:

1)php中的变量名必须以$开头。您的代码中有几个地方没有它们,例如:

public function setArray(elementOfanArray)

if (!elementOfanArray) {

2)函数SomeArray中使用的名称与构造函数_SomeArray中的名称之间存在命名不一致。

3)由于_SomeArray是类的属性,因此需要在setArray函数中使用$this->_SomeArray访问它:

array_push($this->_SomeArray, $elementOfanArray);

4)使用析构函数来清除局部变量确实没有价值,当对象被销毁时它们将被取消。通常,您可以使用析构函数来执行关闭连接,保存状态等操作。 目前,看起来你会使用这样的类:

$myItem = new Item();

$myItem->setArray('Array Item #1');
$myItem->setArray('Array Item #2');
$myItem->setArray('Array Item #3');

$array = $myItem->getArray();

var_dump($array);
// returns:
//
// array(4) {
//     [0]=>
//   string(15) "default message"
//     [1]=>
//   string(13) "Array Item #1"
//     [2]=>
//   string(13) "Array Item #2"
//     [3]=>
//   string(13) "Array Item #3"
// }

5)我不确定你对class property elementOfanArry的意图是什么:

$this->elementOfanArray = 0;    //I am trying to assign empty value to an var

如果您认为自己需要它,因为setArray()方法接受参数,则情况并非如此。

总而言之,只需简单地解决帖子标题"将新元素传递给类中的数组并返回其值",代码可能如下所示:

class Item
{
    private $_SomeArray = array();

    function __construct()
    {
        $this->_SomeArray[0] = "default message";
    }

    public function getArray()
    {
        return $this->_SomeArray;  //function returning whole array
    }

    public function setArray($elementOfanArray)  //function for adding new element to an array and checking if not empty
    {
        if (!$elementOfanArray) {

        } else {
            array_push($this->_SomeArray, $elementOfanArray);
            // or use:
            // $this->_SomeArray[] = $elementOfanArray;
        }
    }
}


$myItem = new Item();

$myItem->setArray('Array Item #1');
$myItem->setArray('Array Item #2');
$myItem->setArray('Array Item #3');

$array = $myItem->getArray();