2012-09-03 36 views
0

我試着合併一個數組,當它通過函數創建時,它有一個數組。我有一個函數,它返回一個數組。PHP數組合並:不是數組?

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); 

它不顯示錯誤,但它也不會被合併。

幫助?

感謝

+0

問題1:您正在循環循環。問題2:你每次都覆蓋'$ new_array'。問題3:變量可能返回空(即,如果沒有任何東西可以循環,'get3'可以返回undefined)。 – jeremyharris

+0

@jeremyharris @jeremyharris我的數組確實有價值,我試圖合併,這是導致問題的原因。覆蓋陣列是一個不同的問題,我可以看看。問題是讓數組合並,並說它不是一個真正的數組,當它通過print_r顯示爲一個數組? – hellomello

+0

您是否在循環之前嘗試過實例化它?在循環之前添加'$ arrayAr = array();否則,當您嘗試第一次使用合併時,它不會知道它是一個數組。 – jeremyharris

回答

0

$arrayAr是局部變量,第二print_r()使用超出了他的變量範圍。如果您需要更寬的空間,請在foreach之前「聲明」它,即$arrayAr = array();(或您想要的任何值 - 在這種情況下並不重要,但array()使代碼清晰)。

+0

我嘗試了addeding $ arrayAr = array();在頂部,但它仍然不顯示任何東西。 – hellomello