1

(PHPで)ここに私の問題があります。クラスで配列を初期化し、コンストラクターで埋めてから、配列の変数を他の関数で使用できるようにしたいと思います..コンストラクターで配列をエコーすると、完全に機能します、しかし、別の関数でエコーしようとすると、非常に異なるものが得られます。

class myProblem
{
    public $phaseArray;

    function myProblem()
    {
        $count1 = 0;
        $metaFile = fopen( 'MyFile.txt', 'r' ) or exit( "Unable to open file!" );
        while( !feof( $metaFile ) )
        {
            $this->phaseArray[0][$count1] = 0;
            $this->phaseArray[1][$count1] = fgets( $metaFile );
            echo $this->phaseArray[1][$count1], $count1, '</br>'; //this part displays well
            $count1++;
        }
        close( $metaFile );
    }

    function displayError()
    {
        foreach( $this->phaseArray as $key => $value )
        {
            echo $key, $value, '</br>'; //this part does not show up correctly
        }
        echo $this->phaseArray[0][2]; //this part does not show up correctly
        echo $this->phaseArray[1][1]; //this part does not show up correctly
    }
}

インデントについて申し訳ありませんが、動作させることができませんでした。正しい出力は(コンストラクターから)です。0りんご 1オレンジ 3梨 4いちご

しかし、2 番目の関数が表示されます。0配列 1配列

0配列 0配列

私が間違っていることについて何か考えはありますか?お時間をいただきありがとうございます!

4

1 に答える 1

1

表示方法が正しいので、入力方法やデータの読み取り方法が間違っているかどうかを判断できます。

2次元の配列を作成していますが、2次元も配列です。したがって、2番目の次元のすべてのアイテムを出力する場合は、別のforeachをループします。

foreach( $this->phaseArray as $key => $values ) {
  foreach( $values as $value ) {
    echo $key, $value, '</br>'; //this part show up correctly
  }
}

配列がどのように構成されているかを知りたい場合は、次の方法で簡単に印刷できます。

echo "<pre>";
var_dump( $aVar );
echo "</pre>";
于 2012-06-13T17:06:50.733 に答える