0

パブリック プロパティである配列にキーと値のペアをプッシュする汎用関数を作成しています。

pushDetailsToArray 関数を呼び出すと、getHospitalDetails 関数内でパブリック プロパティ配列が設定されていないようです。ただし、pushDetailsArray 関数内で配列を印刷しようとすると、印刷されます。ここで私が間違っていることを誰かが知っていますか? 前もって感謝します。

public function pushDetailsToArray($row, $array){

        foreach($row as $key => $value){

            $array[$key] = $value;

        }

                    //print_r($this->hospDetails);

        return $array;

    }

    public function getHospDetails(){

        $row = $this->queryThis( "SELECT * from tblhospitals WHERE HospID = '$this->sessionId'" );

        /*foreach($row as $key => $value){

            $this->hospDetails[$key] = $value;

        }*/

        $this->pushDetailsToArray($row, $this->hospDetails);

        print_r($this->hospDetails);


    }

ちなみに、getHospitalDetails メソッドでコメントアウトされている foreach ループは動作します。ループするジェネリックメソッドを作成できるようにしたいだけです。

4

3 に答える 3

0

ユーザー参照が確実な場合は、次のように変更できますpushDetailsToArray

 <?php
 public function pushDetailsToArray($row, &$array)
 {
     foreach($row as $key => $value)
     {
         $array[$key] = $value;
     }
 }

次に、このように呼び出します (phpversion >= 5.3)

 $this->pushDetailsToArray($row, $this->hospDetails);

または (phpversion < 5.3):

 $this->pushDetailsToArray($row, &$this->hospDetails);

-

         ********** But, I suggest not to use `reference` **************

次のように簡単に変更できますpushDetailsToArray

 <?php
 public function pushDetailsToArray($row)
 {
     $array = array();
     foreach($row as $key => $value)
     {
         $array[$key] = $value;
     }
     return $array;
 }

それから:

 $this->hospDetails = $this->pushDetailsToArray($row);
于 2013-07-24T16:59:49.073 に答える
0
public function pushDetailsToArray($row){
        $array=array();
        foreach($row as $key => $value){

            $array[$key] = $value;

        }

        //print_r($this->hospDetails);

        return $array;

    }

    public function getHospDetails(){

        $row = $this->queryThis( "SELECT * from tblhospitals WHERE HospID = '$this->sessionId'" );

        /*foreach($row as $key => $value){

            $this->hospDetails[$key] = $value;

        }*/

         $this->hospDetails=$this->pushDetailsToArray($row);

        print_r($this->hospDetails);


    }
于 2013-07-24T17:03:23.273 に答える
0

たぶん私は何かが欠けているかもしれませんが、これをやってみませんか:

オプション1

public function getHospDetails(){

    $row = $this->queryThis( "SELECT * from tblhospitals WHERE HospID = '$this->sessionId'" );

    $this->hospDetails = $row;

}

が配列$rowでない場合を除き、その場合はオプション 2 を実行します。

オプション 2

public function pushDetailsToArray($row) {
    $output = array();
    foreach($row as $key => $value){
        $output[$key] = $value;
    }
    return $output;
}

public function getHospDetails() {
    $row = $this->queryThis( "SELECT * from tblhospitals WHERE HospID = '$this->sessionId'" );
    $this->hospDetails = $this->pushDetailsToArray($row);
}

別の方法

public function pushRowToHospDetails($row) {
    foreach($row as $key => $value){
        $this->hospDetails[$key] = $value;
    }
    return $this
}

public function getHospDetails() {
    $row = $this->queryThis( "SELECT * from tblhospitals WHERE HospID = '$this->sessionId'" );
    $this->pushRowToHospDetails($row);
}
于 2013-07-24T17:04:01.670 に答える