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の要素です。

すべての「title」と「artistname」を配列に格納したい場合は、それを行うことができます

$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ループに中括弧がありません。中括弧の後に続く行が1つしかない場合にのみ、中括弧を省略できます。とにかく中かっこを使用することは依然として良い習慣です。

配列の値を確認したい場合は、のprint_r代わりにを使用する必要がありechoます。

配列の要素を出力する場合は、それらをループする必要があります。次にecho、配列の1つの要素のみを出力する場合は、を使用できます。配列全体に使用することはできません。使用しない場合は、単に印刷されます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 に答える