2017-01-09 4 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回程度と言われています。 関数呼び出しの量は一定ではありませんので、値が少なくなると思います。配列からそれらを削除するか、ただちにそれらをダンプしたいと思います。クラス内の配列に新しい要素を渡してその値を返す

私が得たもう1つの質問は、このクラスから要素を取り除かなければならないことです。このクラス以外の値で配列全体を取得する方法はありますか?

私は何を書いたのですか?

+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のためだった:あなたはsetArray()メソッドは、パラメータを受け入れるので、あなたがそれを必要とすることを考えていた場合

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

、このケースではありません。

したがって、すべてのすべてで、単に「クラス内の配列に新しい要素を渡すと、その値を返す」あなたのポストのタイトルに対処するために、コードは次のようになります。あなたからの変数を呼び出す場合

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

関連する問題