2012-06-11 71 views
-1

好吧,我需要將從幾個不同表中提取的數組推入新數組。我以爲這會做,但事實並非如此。警告說array_push()期望參數1是一個數組。有可能是一些非常簡單的,我做錯了,但林新的所有這些PHP的東西,所以不知道。 我以爲參數1是一個數組,因爲從數據庫中獲取數組。將mysql數據推入數組

下面的代碼:

$newsfeed = array("apple"); 

$news = mysql_query(" 
SELECT * FROM news 
UNION ALL 
SELECT * FROM feature ORDER BY timestamp DESC LIMIT 1 
")or die(mysql_error()); 

while($row = mysql_fetch_array($news)) 
{ 

    $artist = mysql_query(" 
    SELECT * FROM members WHERE artist='Y' 
    ORDER BY timestamp DESC LIMIT 2 
    ")or die(mysql_error()); 

    while($row1 = mysql_fetch_array($artist)) 
    { 
     array_push($newsfeed, $row['title'], $row1['artistname']); 
    } 
} 
echo($newsfeed); 

回答

1

看爲array_push的文檔。第一個參數必須是您要推入的數組的名稱。

array_push($myArray, $row['title'], $row1['artistname']); 

$myArray現在有$row['title']和它$row1['artistname']

你也在while循環中缺少大括號。只有一行後面的括號纔可以省略。無論如何,戴好牙套仍然是一個好習慣。

如果您想查看數組的值,應該使用print_r而不是echo

如果你想打印出數組的元素,你需要遍歷它們。然後,當您只打印陣列的一個元素時,您可以使用echo。您不能將其用於整個陣列,否則它只會打印array。關於如何做到這一點的例子見foreach文檔:

$arr = array("one", "two", "three"); 
foreach ($arr as $value) { 
    echo $value; 
} 
+0

用你試過的東西更新你的問題,我們可以再看一遍。你是否聲明瞭'$ myArray'數組? – sachleen

+0

好的,數組正在工作,但它回顯'數組'而不是數組的內容。我只用print_r進行測試 –

+0

這就是'echo'所做的。如果要使用回顯,請使用循環並僅打印一個元素。 – sachleen

2

$行[「標題」]不是數組..它是數組$行的元素。

如果你想保存所有「標題」和「ARTISTNAME」到一個數組,你可以做到這一點

$artists = array(); 
array_push($artists, $row['title'], $row1['artistname']); 
print_r($artists); 

如果要組「冠軍」和「ARTISTNAME」

$artists = array(); 
$artist_data = array('title' => $row['title'], 'artistname' => $row['artistname']) 
array_push($artists, $artist_data); 
print_r($artists); 
0

你可以做一些類似的事情。

$artists=array(); 
$artists[ $row['title'] ] = $row1['artistname']; 

還是我誤解了這個問題?