2012-06-11 39 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']; 

还是我误解了这个问题?