删除PHP数组中的重复项

时间:2013-11-05 08:48:32

标签: php arrays

我正在使用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>

3 个答案:

答案 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 
  ) 
)