2017-11-02 4 views
0

から私はここの上に少し混乱していません。私の知る限り、これはうまくいくはずですが、そうではありません!!変数が一つの関数からアクセス可能であるが、他の

class MyClass extends CI_Controller { 
     private $myArray = array(); 
     public function function1(){ 
       array_push($this->myArray,'data'); 
       echo sizeof($this->myArray);  
     } 
     public function function2(){ 
       echo sizeof($this->myArray); 
     } 
} 

だから最初に私は、ビューをレンダリングし、機能2を呼び出すボタンの配列(特別テキストデータなし)にいくつかのデータを追加しますローカルホスト/ MyClassの/関数1を呼び出します。最初の関数は配列のサイズを出力しますが、function2を呼び出すには、ボタンをクリックして正しい順序で0を出力します。これを実現するにはどうすればよいでしょうか?

私は次のことを試してみました:問題は、最初の関数からのデータで配列を充填し、私は0の大きさではない実際のサイズを取得しています第2の機能を呼び出した後で

1- private $myArray = []; 
2- private $myArray; // then i initiated it in the __construct() function 
3- made it public 

EDIT

をそれを満たした後。

+0

のsizeofは、固定 –

+0

@OscarZarrusをsizeifない、そのは何を達成するためにどのようにタイプミス –

+0

でしたか?あなたは、コードがどのように機能するかを正確に記述しました。 – Narf

答えて

0

あなたのコードは正常に動作しています。 enter image description here配列の戻りサイズです。

+0

タイプミスとして追加する必要があると思う...... ...... –

+0

私はコードが動作しているとデータを印刷しているので、私は 'sizeif 'と書いています。 –

+0

しかし、私は上記のコードを実行しようとしたとき。スクリーンショットを添付しましょう。 –

0
<?php //php 7.0.8 

    class MyClass { 
     private $myArray = array(); 
     public function function1(){ 
       array_push($this->myArray,'data'); 
       echo sizeof($this->myArray);  
     } 
     public function function2(){ 
       echo sizeof($this->myArray); 
     } 
} 
    $x = new MyClass; 
    $x->function1(); // populate array with 1 element and echo (1) 
    $x->function2(); // echo the pre-populated array (1) 

$x = new MyClass; 
    $x->function2(); // echo the no-populated array (0) 
    $x->function1(); // populate array with 1 element and echo (1) 
?> 

私は問題は、MyClassを呼び出すコードに
だと思うあなたは、最初の()はfunction1を呼び出す必要がありますか、自動的にクラスのコール

DEMO

+1

Codeigniterコード私はオブジェクトを作成していません... –

0

にロードするためにあなたは、構造上呼び出すことができます1つはPHPセッションではないかもしれないので、myArraystaticにしようとすることができます。 だからmyArrayはあなたの考えではありません。
もっと見ることができますか?
ajaxでPHPファイルを呼び出していますか?

+0

localhost/MyClass/function1これは関数を呼び出します....そのCI –

関連する問題