0

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

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

}

なぜ私は配列を一緒にマージしようとしました:

$get = new myarray();
$arrayAr = $get->getAr();
$array3 = $get->get3();
$new_array = array_merge($arrayAr ,$array3);

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

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

しかし、私はprint_r($arrayAr);それを配列のようにすることができますか?

ヘルプ?

ありがとう

4

2 に答える 2

1

arrayビルトインの名前です。クラスの名前を変更する必要があります。$dさらに、 (ライブデモ)を定義する必要があります。

<?php
class MyArray {
  public function getAr() {
    $d = 42;
    $data = array($d);
    return $data;
  }
  public function get3() {
    $d = 43;
    $data = array($d);
    return $data;
  }
}
$get = new MyArray();
$arrayAr = $get->getAr();
$array3 = $get->get3();
var_export(array_merge($arrayAr ,$array3)); // [0 => 42, 1 => 43]

編集されたバージョンへの応答:クエリが何も返さない場合はどうなりますか?$databaseそして、あなたは未定義であることに注意してください。また、実際にはデータベースではなく、PDOStatementオブジェクトです。それが実際に有効なPDOオブジェクトであると仮定すると、単に以下を使用する必要がありますfetchAll

class MyArray {
  protected $statement;
  public function query($pdo, $sql) {
    $this->statement = $pdo->query($sql);
  }

  // Don't forget to call query before this method.
  public function getAr() {
    return $this->statement->fetchAll(PDO::FETCH_ASSOC);
  }
}
于 2012-09-03T05:39:16.370 に答える
0

問題は、クラスに保存された名前を使用していることにあるようです。言語で他の意味を持つキーワードを変数名として使用しないでください。array_mergeそれと呼ばれる関数が既にあるので、変数を呼び出さないのと同じように...

このコードは私にとってはうまくいくようです-

class customArray{
  public function getAr(){
    $data[] = 'Stack';
    return $data;
  }

  public function get3(){
    $data[] = 'Overflow';
    return $data;
  } 
}

$get = new customArray();
$arrayAr = $get->getAr();
$array3 = $get->get3();
print_r(array_merge($arrayAr ,$array3))

出力 -

Array
(
    [0] => Stack
    [1] => Overflow
) 

ただし、クラス名を使用すると、arrayこのエラーが発生します-

PHP 解析エラー: 構文エラー、予期しない T_ARRAY、T_STRING が必要です...

于 2012-09-03T05:41:02.407 に答える