0

好的,所以我需要将从几个不同的表中获取的数组推送到一个新数组中。我以为这会做到,但事实并非如此。警告说 array_push() 期望参数 1 是一个数组。可能有一些非常简单的事情我做错了,但我对所有这些 PHP 东西都很陌生,所以不知道。我认为参数 1 是一个数组,因为数组是从数据库中获取的。

这是代码:

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

3 回答 3

2

$row['title'] 不是一个数组。它是数组 $row 的一个元素。

如果您想将所有“标题”和“艺术家名”存储到一个数组中,您可以这样做

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

如果你想将'title'和'artistname'分组

$artists = array();
$artist_data = array('title' => $row['title'], 'artistname' => $row['artistname'])
array_push($artists, $artist_data);
print_r($artists);
于 2012-06-11T15:31:10.483 回答
2

查看array_push的文档。第一个参数必须是您要推入的数组的名称。

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

$myArray现在将拥有$row['title']$row1['artistname']在其中。

您还缺少 while 循环上的大括号。当大括号后面只有一行时,您只能省略大括号。无论如何,戴牙套仍然是个好习惯。

如果你想查看一个数组的值,你应该使用print_r而不是echo.

如果要打印出数组的元素,则需要遍历它们。然后echo,当您只打印数组的一个元素时,您可以使用 , 。您不能将它用于整个数组,否则它只会打印arrayforeach有关如何执行此操作的示例,请参阅文档:

$arr = array("one", "two", "three");
foreach ($arr as $value) {
    echo $value;
}
于 2012-06-11T15:15:18.553 回答
0

你能做类似的事情。

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

还是我误解了这个问题?

于 2012-06-11T16:29:59.630 回答