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 :(得分: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;
}
}