1

!in_arrayの使い方を知りたいです。

私はこのコードを持っていますが、機能しません:

while ($row = mysql_fetch_assoc($result)) {

        if (!in_array($row['item'], $output)) {
            $output[] = $row;
        }

      }

   print(json_encode($output));  // need all rows, not just ['item']

はい、私は古いmysqlを使用していることを知っていますが、コードはあまり「安全」ではありません。アイテムが配列内にあるかどうかを確認する方法について知りたいだけです。そうでない場合は、保管してほしい。もしそうなら、私はループをスキップしたい...

編集:これは追加のアイデアです:

$items[] = "";
while ($row = mysql_fetch_assoc($result)) {
    $item[] = $row['item'];

        if (!in_array($row['item'], $items)) {
            $output[] = $row;
        }
 }
print(json_encode($output));

このコードは、配列内のすべてのアイテムを重複して配置します。重複を防ぐためにこれを行っています

私のSQL:

    $result = mysql_query("
    SELECT b.item, a.rate_id, a.review, c.category, u.username
    FROM comments a
    INNER JOIN items b
        ON a.item_id = b.items_id
    INNER JOIN master_cat c
        ON c.cat_id = b.cat_id
    INNER JOIN users AS u
        ON u.user_id = a.user_id
    ORDER BY rate_id DESC LIMIT 15;");
4

2 に答える 2

3
  while ($row = mysql_fetch_assoc($result)) {

    if (!in_array($row['item'], $output)) {
        $output[] = $row['item'];
    }

  }

また

  while ($row = mysql_fetch_assoc($result)) {

    if (!in_array($row['item'], $output))  continue;
    $output[] = $row['item'];

  }
于 2012-10-04T15:28:45.167 に答える
0

次のようなものが必要なようです:

while ($row = mysql_fetch_assoc($result)) {

   if (!isset($output[$row['item']])) {
     $output[$row['item']] = $row;
   }

}
于 2012-10-04T15:31:38.740 に答える