列出其他别名也

时间:2014-12-25 17:09:11

标签: php arrays

我想显示别名昵称,该昵称在同一个IP地址上有2个配置文件。 现在我在StackOverflow上有一个解决方案,现在我想显示两个名称。

消息来源

<?php

$sql = "SELECT ip_adres, nickname2 FROM users";
$users = $db->prepare($sql);
$users->execute();

$ips = array();
$aliases = array();
foreach($users as $user) {
    if (in_array($user['ip_adres'], $ips))
        array_push($aliases, $user);

    $ips[] = $user['ip_adres'];
}

foreach($aliases as $alias) {
    echo $alias['nickname2'] . ' has a alias profile! '. $alias['ip_adres'] .'<br/>';
}

?>

$ user OURPUT

First has a alias profile! 213.93.99.38
Second has a alias profile! 213.93.99.38
Third has a alias profile! 213.93.45.33
Bla has a alias profile! 213.93.45.33
ZZZZ has a alias profile! 213.93

现在显示

Second has a alias profile! 213.93.99.38
Bla has a alias profile! 213.93.45.33

我没有获得第一个别名昵称我该怎么做?

2 个答案:

答案 0 :(得分:1)

这将为你做.. ..

<?php
require_once "db_connect.php";

$sql = "SELECT
       ip_adres,
       GROUP_CONCAT(DISTINCT nickname2 ORDER BY nickname2) nickname
       FROM
       users
       GROUP BY ip_adres
       HAVING COUNT(*) > 1";
$users = $db->prepare($sql);
$users->execute();

foreach($users as $u){
    $nick = $u['nickname'];
    $ip = $u['ip_adres'];
    echo "$nick $ip";
}

?>

答案 1 :(得分:0)

尝试将代码更改为此类

<?php
$sql = "SELECT ip_adres, nickname2 FROM users";
$users = $db->prepare($sql);
$users->execute();

$ips = array();

# count occurrences of each IP address
foreach($users as $user) {
    if (isset($ips[$user['ip_adres']]))
        $ips[$user['ip_adres']] ++;
    else
        $ips[$user['ip_adres']] = 1;
}

# print out records with IP address which appears more than once    
foreach($users as $user) {
    if (1 < $ips[$user['ip_adres']])
        echo $user['nickname2'] . ' has a alias profile! '. $user['ip_adres'] . '<br/>;
}