2012-04-26 7 views
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 

Предположим, что эта таблица представляет собой многомерный массив. Как скрыть дублируемое значение из столбца «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      
+0

Было бы весьма признателен, если бы вы форматировать этот бит: указать, что является частью строкового значения в массив, а что нет, то, как выглядит геярхия ... [edit] Я думаю, что вижу это сейчас, мне понадобилось пару минут. – Malovich

+0

Итак, вы хотите удалить значения столбца, но не строки с этими значениями? – Anton

+0

Да только значения столбцов, а не строки. – Jeniffer

ответ

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.

+0

Если вы сделаете это, вы будете оглушать значения .. это плохо. – Anton

+0

Что вы подразумеваете под этим? не уверен, что я получу вас – xbonez

+0

Я не хочу удалять значения. Я хочу скрыть значения, которые дублируются, и эта таблица является примером, мне нужно сделать это динамически. – Jeniffer

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; 
    } 
} 
Смежные вопросы