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 回答