PHP突出显示数组中的重复值

时间:2014-03-24 18:58:24

标签: php arrays duplicates highlight

好的,我很确定有一个简单的解决方案,我在这方面遗漏了一些东西,但是

假设我有一个简单的数组:

Array
(
    [0] => 79990
    [1] => 79040
    [2] => 79100
    [3] => 79990
    [4] => 79490
    [5] => 79290
    [6] => 79990
)

0,3和6是相同的值

如何在foreach循环上标记/突出显示这些值?结果应该是这样的:

Array
(
    [0] => *79990*
    [1] => 79040
    [2] => 79100
    [3] => *79990*
    [4] => 79490
    [5] => 79290
    [6] => *79990*
)

编辑:拼写错误

2 个答案:

答案 0 :(得分:2)

这应该可以解决问题:

<?php

    $array = array( '79900',
                    '79040',
                    '79100',
                    '79990',
                    '79490',
                    '79290',
                    '79990');

    $count = array_count_values($array);

    echo "<pre>".print_r($array, true)."</pre>";

    foreach($array as $val)
    {
        if($count[$val]>1) {
            $output[] = "*".$val."*";
        } else {
            $output[] = $val;
        }
    }

    echo "<pre>".print_r($output, true)."</pre>";

?>

输出:

Array
(
    [0] => 79900
    [1] => 79040
    [2] => 79100
    [3] => 79990
    [4] => 79490
    [5] => 79290
    [6] => 79990
)

Array
(
    [0] => 79900
    [1] => 79040
    [2] => 79100
    [3] => *79990*
    [4] => 79490
    [5] => 79290
    [6] => *79990*
)

注意:你的[0]实际上与[3]和[6]不一样,但我认为这只是一个错字

让我知道你是怎么过的!

答案 1 :(得分:0)

$array = array("79900","79040","79100","79990","79490","79290","79990");
$count = array_count_values( $array );
$list  = array();
foreach( $count as $index => $value ){
    if( $value > 1 ){
        $list[] = "*" . $index . "*";
    }else{
        $list[] = $index;
    }
}

请注意,重复索引已删除