如何从列中删除重复的值?

时间:2012-04-26 14:35:44

标签: php html

  Time      To      Status  Off-Track   On-Track
10:28 AM    gf      6233          4         4
10:32 AM    dd      3835                    7
10:40 AM    ss      3235                    4
10:43 AM    ww      6621                    5
11:06 AM    zz      3837                    7

假设这个表是一个多维数组,如何隐藏“On-Track”列中的重复值而不影响使用PHP的其他列?

我需要这张桌子

  Time      To      Status  Off-Track   On-Track
10:28 AM    gf      6233          4         
10:32 AM    dd      3835                    
10:40 AM    ss      3235                    
10:43 AM    ww      6621                    5
11:06 AM    zz      3837                    

2 个答案:

答案 0 :(得分:2)

不确定我是否正确理解了您的问题,但如果您只想删除“在线”列中的重复项,则可以使用array_unique方法执行此操作。

$data = array(
    'time' => array('10.28','10.32','10.40','10.43','11.06'),
    'To' => array('gf','dd','ss','ww','zz'),
    'on-track' => array(4,7,5,4,7)
);

$data['on-track'] = array_unique($data['on-track']);

看到您的问题的编辑,似乎您只想要出现一次的数组中的那些值。在这种情况下,您可以使用以下代码:

<?php

$data = array(
        'time' => array('10.28','10.32','10.40','10.43','11.06'),
        'To' => array('gf','dd','ss','ww','zz'),
        'on-track' => array(4,7,5,4,7)
    );
$data['on-track'] = get_values_with_count_one($data['on-track']);

echo '<pre>';
var_dump($data['on-track']);  //returns array(5);
echo '</pre>';

function get_values_with_count_one($input) {
    $count = array_count_values($input);
    $returnArray = array();

    foreach($count as $key=>$value) {
        if ($value === 1)
            $returnArray[] = $key;
    }

    return $returnArray;
}

此外,您可以存储一个特殊值,例如-1,而不是重复值。所以你的最终数组将是array(-1,-1,5,-1,-1)。输出时,不输出-1s。这样,您可以保存5的位置。

答案 1 :(得分:0)

这个怎么样?:

$aExists = array(); // array to fill values which already exists.
foreach ($aItems as &$aOneRow){
  if (isset($aExists[$aOneRow['On-Track']])){
    $aOneRow['On-Track'] = '';
  } else {
    $aExists[$aOneRow['On-Track']] = true;
  }
}