【问题标题】:array_unique not working in PHP?array_unique 在 PHP 中不起作用?
【发布时间】:2011-12-13 18:09:06
【问题描述】:

我的 MySql 数据库中有一个表:

  pageid   | text
-----------+----------
    1      | test
-----------+----------
    2      | example
-----------+----------
    3      | another
-----------+----------
    1      | example1

还有这个 PHP 代码:

$query = "SELECT pageid FROM test";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
  {
  $id = $row['pageid'];
  $id1 = array($id);
  $id2 = array_unique($id1);
  foreach ($id2 as $value)
    {
    echo $value . "<br>";
    }
  }

但它会返回:

1
2
3
1

我想让pageids 独一无二。所以我想回显一下号码1,一次。像这样:

1
2
3

那我做错了什么?我怎样才能实现我想要的?

提前谢谢...

[我知道这段代码没有多大意义,但这只是这个问题的一个演示,我有一个更复杂的代码:)]

【问题讨论】:

  • 我确定您知道您可以在 mysql 中使用 group by,但请注意,请注意。

标签: php mysql arrays select array-unique


【解决方案1】:

当然,在这种情况下,真正的答案是选择不同的记录开始:

$query = "SELECT DISTINCT pageid FROM test";

但至于为什么你的代码不起作用......

您将$id1 声明为一个数组,但没有附加到它。相反,您每次只是创建一个 1 元素数组。相反,追加所有结果然后调用array_unique()

$query = "SELECT pageid FROM test";
$result = mysql_query($query);

// Declare array first
$id1 = array();
while($row = mysql_fetch_array($result))
  {
  $id = $row['pageid'];
  // Append to the array...
  $id1[] = $id;
  }

// Call array_unique() outside the loop:
$id2 = array_unique($id1);
foreach ($id2 as $value)
{
  echo $value . "<br>";
}

【讨论】:

    【解决方案2】:

    您可以在您的SELECT 中执行类似SELECT DISTINCT pageid FROM test 或使用GROUP BY 之类的操作,如下所示:

    SELECT pageid FROM test WHERE 1 GROUP BY pageid 
    

    【讨论】:

      【解决方案3】:

      您可以在您的 sql 查询中使用 Distinct 关键字。这将为您返回 Page 的独特价值

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-02-25
        • 1970-01-01
        • 1970-01-01
        • 2015-07-11
        • 1970-01-01
        • 2015-05-05
        • 2014-03-12
        相关资源
        最近更新 更多