我正在寻求一些帮助。请看下面的数组。在我拥有的数组中,相同的数据已附加到3个项目,并且单独的项目具有自己的唯一数据。
Array
(
[0] => Array
(
[item] => 116
[stockcode] => UPGRADE
[qty] => 1
[nett] => 35.3
[vat] => 20
[gross] => 42.36
)
[1] => Array
(
[item] => 117
[stockcode] => UPGRADE
[qty] => 1
[nett] => 35.3
[vat] => 20
[gross] => 42.36
)
[6] => Array
(
[item] => 118
[stockcode] => UPGRADE
[qty] => 1
[nett] => 35.3
[vat] => 20
[gross] => 42.36
)
)
Array
(
[0] => Array
(
[item] => 086
[stockcode] => INS VISIT
[qty] => 1
[nett] => 60
[vat] => 0
[gross] => 60
)
)
在我的代码中,我有以下内容尝试显示数据:
foreach ($section['lines'] as $l) {
//if (count($plots) > 1) :
//echo count($l);
if ($l['is_stockcode']) {
$l['stockcode'] = '<a href="javascript:void(0);" class="stockcode-link" data-id="' . $l['stockcode'] . '" >' . $l['stockcode'] . '</a> ';
}
?>
<tr>
<td class="text-right"><?php echo $l['qty']; ?></td>
<td><?php echo $l['stockcode']; ?></td>
<td class="text-right"><?php echo number_format($l['nett'], 2); ?></td>
<td class="text-right"><?php echo $l['vat']; ?>%</td>
<td class="text-right"><?php echo number_format($l['gross'], 2); ?></td>
</tr>
<?php
$total_nett += $l['nett'];
$total_gross += $l['gross'];
};
我想要实现的是,看到第一个数组中的数据是相同的,我只希望它显示一次。我已经完成了一个php连接,以&#34; 116,117,118和#34;的格式显示项目ID。但是,我不想将数据重复3次,而是希望将其显示一次。那可能吗?我已经尝试过使用array_unique,但是它剥离了很多数据本身。所以任何帮助都会受到赞赏。
由于
答案 0 :(得分:0)
在显示之前,您可以先将它们过滤掉。可能有更好的解决方案,但首先想到的是在子阵列上制作 json_encode ,然后使用 array_unique 并解码数据。 E.g。
$data = array(
array('a' => 1, 'b' => 'st', 'c' => 3),
array('a' => 1, 'b' => 'st', 'c' => 3),
array('a' => 3, 'b' => 'st', 'c' => 1),
array('a' => 1, 'b' => 'st', 'c' => 3),
);
$tmpData = array();
foreach ($data as $record) {
$tmpData[] = json_encode($record);
}
$tmpData = array_unique($tmpData);
$result = array();
foreach ($tmpData as $record) {
$result[] = json_decode($record, true);
}
答案 1 :(得分:0)
您可以尝试使用数据集的哈希值作为键。在foreach循环之前将类似的内容添加到代码中......
// array of unique results...
$unique_array = [];
// for earch set of data in your array...
foreach ($your_array as $your_array_data) {
// remove ids - since those ARE unique...
unset($your_array_data['item']);
// create a unique hash sum of the data as the new array key
// this hash sum will be the same for identical data sets
$unique_array[md5(implode('', $your_array_data))] = $your_array_data;
}