使用数组唯一的数组

时间:2012-08-29 02:45:39

标签: php arrays multidimensional-array

我的php代码如下:

<?php
    $conn = mysql_connect("localhost","root","") or die(mysql_error());
    mysql_select_db("dbcsv",$conn);
    $data = array();
    $sql = "select orig,dlvSourceIp from tblcsv group by dlvSourceIp";
    $res = mysql_query($sql) or die(mysql_error());
     echo '<table border="1px">';
     echo "<tr><td>Dormain</td><td>ip of the domain</td><td>Total Mail</td><td>Mail Fail</td><td>Percentage</td></tr>";
        while($data = mysql_fetch_array($res)){
             //echo "<tr><td>".$data['orig']."</td><td>".$data['dlvSourceIp']."</td><td></td><td></td></tr>";
            $t = $data['orig'];
             $getData = array_unique($t);
             var_dump($getData);
}
?>

注意

对于$data['orig'],我从数据库中选择它的数据数组将显示:cat cat dog cat dog。我想要这样的输出:cat dog为什么我使用数组唯一。

问题:

我收到错误消息array_unique() expects parameter 1 to be array, null given in C:\wamp\www\CountLine_CSV\csv2mysql.php on line 21如何解决?请任何人帮助我,谢谢。

1 个答案:

答案 0 :(得分:1)

您的数组作为字符串值存储在表中(所以我认为)。您需要获取条目explode并创建一个数组,然后使用array_unique来获得所需的效果。尝试以下操作,看看它是否有效:

$t = $data['orig']
$array = explode(" ", $t);
$array = array_unique($array);
print_r($array);

另外,请考虑使用MySQLi或PDO进行查询。

所以完整地,类似下面的内容应该足够了:

<?php   
    $mysqli_connection = new mysqli("hostname", "username", "password", "database");
    if ($mysqli_connection->connect_errno) {
        echo ("Connection Failure");
        exit();
    }

    $sql = "SELECT orig, dlvSourceIp FROM tblcsv GROUP BY dlvSourceIp";
    echo '<table border="1px">';
    echo "<tr><td>Dormain</td><td>ip of the domain</td><td>Total Mail</td><td>Mail Fail</td><td>Percentage</td></tr>";
    while($data = $sql->fetch_array(MYSQLI_ASSOC)) {
        $t = $mysqli_connection->real_escape_string($data['orig']);
        $array = explode(" ", $t);
        $array = array_unique($array);
        // Do something with the array, or:
        print_r($array);
    }
    $sql->free();
    $mysqli_connection->close();
?>