2017-01-09 42 views
0
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次。 函数调用的数量不是恒定的,所以如果将有更少的值..我想将它们从数组中删除或只是立即转储它们。将新元素传递给类中的数组并返回其值

我得到的另一个问题是我应该如何从这个类中获取我的元素,是否有一种方法可以获得整个数组以外的值?

这就是我写的吗?

+0

如果你调用从变量你需要使用'$ this->' – Naruto

回答

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)我不知道你是什么目的是为类属性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(); 
+0

这个类或函数中的类,很好地解答了我提到的每个方面的问题。 谢谢你的输入:)。 – AESTHETICS

+0

我将elementOfanArray设置为0的意图是在用空值调用函数以使数组变大。有一个机会,我甚至不通过变量传递函数,所以它可能是无用的。 – AESTHETICS

+0

这并不是一个错误的想法,但是在你当前的代码中,你并没有在任何地方使用该变量。我想你可能会把你的'setArray()'方法中的参数混淆成同名。 – BizzyBob

相关问题