我有一个如下所示的数组:
$rowarray(
[0] => [PID] => 97162 [TID] => 340 [StatsID] => 49678
[1] => [PID] => 97165 [TID] => 340 [StatsID] => 49673
[2] => [PID] => 97167 [TID] => 340 [StatsID] => 49675
[3] => [PID] => 97162 [TID] => 340 [StatsID] => 49679
)
然后我的代码看起来像这样:
$cntr=0;
foreach($rowarray as $row)
{
echo "<tr><td>$row[PID] $row[TID] $row[StatsID] </td></tr>";
$cntr++;
}
我想做的两件事我希望不能在数组中打印重复项,而是打印具有不同值的附加列。所以我想要的输出看起来像这样。
97162 340 49678 49679
97165 340 49673
97167 340 49675
我从array_unique()开始,但只返回:
97162 340 49678
答案 0 :(得分:0)
这就是我要做的事情:
usort
按PID排序,然后按TID排序)$last_PID
和$last_TID
)。它们将在循环中存储相应的值<tr>
(但不是最终的</tr>
,因此循环的第一部分可以根据需要添加更多的StatsID值)</tr>
这可能不是最佳选择,但我确信它会起作用。
答案 1 :(得分:0)
将$rowarray
结构转移到数组映射的地图中,如下所示:
$rowarray = array(
array('PID' => 97162, 'TID' => 340, 'StatsID' => 49678),
array('PID' => 97165, 'TID' => 340, 'StatsID' => 49673),
array('PID' => 97167, 'TID' => 340, 'StatsID' => 49675),
array('PID' => 97162, 'TID' => 340, 'StatsID' => 49679)
);
$keys = array();
foreach ($rowarray as $row) {
if (!is_array(@$keys[$row['TID']])) {
$keys[$rowarray['TID']] = array();
}
if (!is_array(@$keys[$row['TID']][$row['PID']])) {
$keys[$row['TID']][$row['PID']] = array();
}
$keys[$row['TID']][$row['PID']][] = $row['StatsID'];
}
foreach ($keys as $pid => $pid_arr) {
foreach ($pid_arr as $tid => $tid_arr) {
echo "<tr><td>$tid $pid " . implode(' ', $tid_arr) . "</td></tr>";
}
}
答案 2 :(得分:0)
假设只有StatsID发生变化(问题不明确)
$map = array();
foreach($rowarray as $row){
$k = $row["PID"] . '-' . $row["TID"];
if( !isset( $map[$k] ) ){
$map[$k] = array();
}
array_push( $map[$k], $row["StatsId"] );
}
foreach($map as $k=>$v){
$row = explode( '-', $k );
echo "<tr><td>$row[0] $row[1] " . implode( " ", $v ) . " </td></tr>";
}
答案 3 :(得分:0)
据我所知,唯一的方法是循环创建一个新的唯一数组。
$unique = array();
foreach ($row as $value)
{
$key = $value['PID'];
if (isset($unique[$key]))
{
$unique[$key]['StatsID'] .= ' ' . $value['StatsID'];
}
else
{
$unique[$key] = $value;
}
}
现在,$ unique将为您提供您正在寻找的结果,您可以遍历唯一的数组并输出结果(如果需要,我还添加了您的计数器):
$count = count($unique);
foreach ($unique as $row)
{
echo "<tr><td>{$row['PID']} {$row['TID']} {$row['StatsID']} </td></tr>";
}