在PHP循环中显示所有唯一行

时间:2014-12-15 08:18:16

标签: php

我在PHP中有一个foreach循环:

$Directli = new Directli();
$output = $Directli->build_query('getPayments');
foreach($output as $row) {

}

我希望回显循环内的信息,但只根据$row->ID

的每个唯一行

4 个答案:

答案 0 :(得分:3)

结帐array_unique。您可以在循环之前调用它,以获取具有唯一项的数组。如果你不能使用它,那么你必须在循环中构建一个哈希,检查项目是否已被处理:

$map = array();
foreach($output as $row) {
 if (!isset($map[$row->ID])) {
    $map[$row->ID] = true;
    echo $row->ID;
 }
}

答案 1 :(得分:1)

作为替代方案,你可以创建一个容纳id的容器,然后在循环内检查它是否还在那里,将其推入内部。

$ids = array();
foreach($output as $row) {
    if(!in_array($row->ID, $ids)) {
        $ids[] = $row->ID;
        // other process below that you need to do
        echo $row->ID;
    }
}

如果此结果数组来自SELECT语句,请考虑使用DISTINCT子句。

答案 2 :(得分:0)

请确保您已使用您的代码,示例和理论格式化您的问题。

<?php 
.. // your connections etc .. //
$sql = mysql_query("SELECT * FROM `something` WHERE `id`='$id'"); // $id you are giving here $row->ID
$res = mysql_fetch_array($sql);
$output = array($res);
foreach($output as $row => $result)
{
echo $result;

}
?>

您也可以使用

 <?php 
    .. // your connections etc .. //
    $sql = mysql_query("SELECT * FROM `something` WHERE `id`='$id'"); // $id you are giving here $row->ID
    while($res = mysql_fetch_array($sql));
    {
    echo $result;

    }
    ?>

答案 3 :(得分:0)

**use array_unique:**

$result = array_unique($input);
print_r($result);
where $input = array("a" => "green", "red", "b" => "green", "blue", "red");  //for example