-4

我正在使用 Google API 从 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>
4

3 回答 3

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
)
于 2013-11-05T08:49:49.470 回答
0

您必须在循环之前执行此操作。例如:

$arrayTable = array_unique($arrayJson['rows']);
于 2013-11-05T09:07:21.403 回答
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在它唯一化之前将所有值转换为字符串。在 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 
  ) 
) 
于 2013-11-05T10:50:11.630 回答