0
  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

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

我需要这张桌子

  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                    
4

2 回答 2

2

不确定我是否正确理解了您的问题,但如果您只想从“on-track”列中删除重复项,您可以使用该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 的位置。

于 2012-04-26T14:42:53.183 回答
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;
  }
}
于 2012-04-26T15:08:11.753 回答