Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从PDO fetchall中找到重复的数组值?_Php_Pdo - Fatal编程技术网

Php 如何从PDO fetchall中找到重复的数组值?

Php 如何从PDO fetchall中找到重复的数组值?,php,pdo,Php,Pdo,我正在为我们公司的内部网站制作一个报告仪表板。下面的功能是从表中选择所有作业和后缀。我正在使用PDO fetchall检索我的结果。该数组看起来像: Array ( [0] => Array ( [JOB] => 197182 [SUFFIX] => 002 ) [1] => Array ( [JOB] => M03001 [SUFFIX] =&

我正在为我们公司的内部网站制作一个报告仪表板。下面的功能是从表中选择所有作业和后缀。我正在使用PDO fetchall检索我的结果。该数组看起来像:

Array
( 
    [0] => Array 
    ( 
        [JOB] => 197182 
        [SUFFIX] => 002 
    ) 
    [1] => Array 
    ( 
        [JOB] => M03001 
        [SUFFIX] => 001 
    ) 
    [2] => Array 
    ( 
        [JOB] => 197182 
        [SUFFIX] => 002 
    )
)
在这种情况下,仪表板应该有2行,每个作业1行(不包括重复项),但是如何搜索此数组并使其仅返回2行计数而不是3行计数?因为有一个重复的作业和后缀,我不想用相同的作业后缀创建第三行,所以它应该只有两行

function row_count() 
{
    $conn = new PDO('odbc:GLOBALTST');
    $result = $conn->prepare('SELECT JOB, SUFFIX FROM JOBS_IN_PROCESS_G');
    $result->execute();
    $row = $result->fetchall(PDO::FETCH_ASSOC);
    global $count;
    $count = count($row);\\ if I print this out I get 3
}

您可以在查询端通过选择
DISTINCT
行的作业后缀列来解决这个问题,如下所示:

$result = $conn->prepare('SELECT DISTINCT JOB, SUFFIX FROM JOBS_IN_PROCESS_G');

如果您想在从表中选择行后在PHP端选中此项,但我更喜欢第一项,因为最好只从DB表中获取您需要的内容。您也可以在PHP中使用
数组\u列
来完成此操作


如果您想保持顺序,请使用
array\u reverse

array\u unique()
?@Jaquarh,根据有关array\u unique的php文档,此函数不适用于多维数组。在这种情况下,一个简单的循环和未设置的跟踪副本就足够了。但是,依靠您的数据层来处理它可能会更好,如果它可能是一个重复出现的主题,那么您也可以为它创建一个视图。为什么不在SQL中执行计数?我支持在DB端进行计数的概念。一个好的经验法则是不要要求超过你需要的。
$unDuplicated = array_combine(array_column(($rows = $result->fetchall(PDO::FETCH_ASSOC)), 'SUFFIX'), $rows);