0

関数を介して作成されているときに配列をマージしようとしています

関数があり、配列を返します。

class myarray
{
 public function getAr($id)
   {
      // mysql query
      while($dd= $database->fetch(PDO::FETCH_ASSOC))
           {
               $data[] = $dd; //there's values in the array when its being populated through the function of the while loop
           }
               return $data;
   }
 public function get3($id)
   {
      // mysl query
      while($dd= $database->fetch(PDO::FETCH_ASSOC))
           {
               $data[] = $dd; //there's values in the array when its being populated through the function of the while loop
           }
               return $data;
   }    
}

配列をマージしようとしたのはなぜですか:

$get = new myarray();

while($row = $fet->fetch(PDO::FETCH_ASSOC))
{
    $arrayAr = $get->getAr($id);
    $array3 = $get->get3($id);
    $new_array = array_merge($arrayAr ,$array3); //this gives me the error
    print_r($arrayAr); //displays array
}
    print_r($arrayAr); //displays nothing, why is that?

それは配列ではないと言っていますか?

array_merge() [function.array-merge]: Argument #1 is not an array 

しかしprint_r($arrayAr);、whileループ内の配列のようにできますが、その外側には何も表示されませんか?

これを試したところ…

$new_array = array_merge((array)$arrayAr ,(array)$array3);

エラーは表示されませんが、マージもされません。

ヘルプ?

ありがとう

4

1 に答える 1

0

あなた$arrayArはローカル変数であり、2番目print_r()は彼の変数の範囲を超えて使用されます。より広く利用できるようにする必要がある場合は、前foreachにie $arrayAr = array();(または任意の値-この場合は重要ではありませんarray()が、コードを明確にします)を使用して「宣言」します。

于 2012-09-03T18:48:52.957 に答える