我正在使用Google API从Google Analytics中提取数据。但是我无法删除数组中的重复项。我已经检查了论坛和array_unique功能似乎可以做到这一点,但我不能让它工作。有什么想法吗?
非常感谢!
<?php
$jsonurl = "URL";
$json = file_get_contents($jsonurl,0,null,null);
$arrayJson = json_decode($json, true);
$arrayTable = $arrayJson['rows'];
?>
<table style="border 1px solid" width="700px">
<tr>
<td>ID</td>
<td>Source</td>
<td>Medium</td>
<td>Column 4</td>
<td>Column 5</td>
<td>Column 6</td>
<td>Column 7</td>
<td>Column 8</td>
</tr>
<?php for($i = 0; $i < count($arrayTable); $i++) { ?>
<tr>
<?php for($ii = 0; $ii < count($arrayTable[$i]); $ii++) { ?>
<td> <?php print_r($arrayTable[$i][$ii]); ?></td>
<?php } ?>
</tr>
<?php } ?>
</table>
答案 0 :(得分:4)
您可以使用下面的array_unique:
$input = array("a" => "green", "red", "b" => "green", "blue", "red");
$result = array_unique($input);
print_r($result);
输出:
Array
(
[a] => green
[0] => red
[1] => blue
)
答案 1 :(得分:0)
你必须在周期之前完成。 例如:
$arrayTable = array_unique($arrayJson['rows']);
答案 2 :(得分:0)
问题是因为您尝试在多维数组上使用array_unique
。它被设计为仅在数组的第一级工作。例如:
$a = array('crazy', 'sane', 'mad', 'sane');
print_r( array_unique($a) );
以上将给出:
array( 'crazy', 'sane', 'mad' );
但是,如果你尝试:
$a = array(
0 => array('crazy'),
1 => array('sane'),
2 => array('mad'),
3 => array('sane'),
);
print_r( array_unique($a) );
你会得到:
Array ( [0] => Array ( [0] => crazy ) )
这是因为array_unique
在将所有值转换为unquification之前将其转换为字符串。在PHP中,所有数组在转换时都会产生字符串Array
...这就是为什么你只得到一个项目。
解决此问题的唯一方法是,如果您选择使用一个值来表示您的唯一值,并根据此值进行排序/取消。标准方法是将此值设置为数组的键,并自动创建唯一列表。
例如,从上面获取多维数组,我们可以通过执行以下操作转换为唯一数组。
$u = array();
foreach ( $a as $key => $val ) {
$u[reset($val)] = $val;
}
print_r( $u );
你会得到:
Array (
[crazy] => Array (
[0] => crazy
)
[sane] => Array (
[0] => sane
)
[mad] => Array (
[0] => mad
)
)