$toOne=array();
$input=array(array("1"=>"a"),array("2"=>"b"),array("2"=>"b"),array("3"=>"b"),array("4"=>"c"));
/* 把2维数组化为1维 重复的元素便被消去 */
foreach($input AS $a)
{
foreach($a AS $k=>$v)
{
$toOne[$k]=$v;
}
}
/* 把1维数组toOne化为2维 */
$toTwo=array();
foreach($toOne AS $k=>$v)
{
$toTwo[]=array($k=>$v);
}
print_r($toTwo);

解决方案 »

  1.   

    楼上哥们,我的数组做成二维的是为了存二维下标相同但值不同的值,比如:
    array(6) { [0]=> array(1) {[1]=> string(1) "a" } 
    [1]=> array(1) {[2]=> string(1) "b" } 
    [2]=> array(1) {[2]=> string(2) "b" }
    [3]=> array(1) {[2]=> string(2) "f" }
    [4]=> array(1) {[3]=> string(1) "b" } 
    [5]=> array(1) {[4]=> string(1) "c" }
     }其中下标为1,2,3的三个二维数组中值分别为:[2]=b,[2]=b,[2]=f 这三个值,我现在想要的是把两个重复的[2]=b去掉一个,组成下面这个形式
    array(5) { [0]=> array(1) {[1]=> string(1) "a" } 
    [1]=> array(1) {[2]=> string(1) "b" } [2]=> array(1) {[2]=> string(2) "f" }
    [3]=> array(1) {[3]=> string(1) "b" } 
    [4]=> array(1) {[4]=> string(1) "c" }
     }
      

  2.   

    $ar = array(
      array("a"), 
      array("b", "b"), 
      array("b"),
      array("c"),
    );$ar = array_map('array_unique', $ar);
    var_dump($ar);
      

  3.   

    $ar = array(
      array("a"), 
      array("b", "b"), 
      array("b"),
      array("c"),
    );$ar = array_map('array_unique', $ar);
    var_dump($ar);=======
    唠叨大哥厉害...原来还有这么好用的函数,呵呵
      

  4.   

    奇怪!难道变了吗?array_unique
    (PHP 4 >= 4.0.1, PHP 5)array_unique -- 移除数组中重复的值
    说明
    array array_unique ( array array )
    array_unique() 接受 array 作为输入并返回没有重复值的新数组。 注意键名保留不变。array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。 注: 当且仅当 (string) $elem1 === (string) $elem2 时两个单元被认为相同。就是说,当字符串的表达一样时。 第一个单元将被保留。 例子 1. array_unique() 例子<?php
    $input = array("a" => "green", "red", "b" => "green", "blue", "red");
    $result = array_unique($input);
    print_r($result);
    ?>  上例将输出:Array
    (
        [a] => green
        [0] => red
        [1] => blue
    )  
     
      

  5.   

    <?php
    $arr=array(
    0=>array(1=>'a'),
    1=>array(2=>'b'),
    2=>array(2=>'b'),
    3=>array(3=>'b'),
    4=>array(4=>'c')
    );
    function removeArr($args,$the_key)
    {
    global $arr;
    if (is_array($args))
    {
     foreach ($args as $key => $value)
    {
     $u_id=md5($value.'...'.$key.'key'.$value.'value');
     if (in_array($u_id,$GLOBALS['arr_store']))
    {
     
     unset($arr[$key]);
    }
    else
    {
    $GLOBALS['arr_store'][]=$u_id;
    }
    }
    }
    }
    array_walk( $arr,'removeArr');
    var_dump($arr);
    ?>
      

  6.   

    又看了一下你的问题,发现前面的答复是我看错了意思
    不过var_dump的结果确实比较混乱,建议用var_export函数,这样产生的输出可以直接使用而不必改造
    $arr=array(
     0 => array(1=>'a'),
     1 => array(2=>'b'),
     2 => array(2=>'b'),
     3 => array(3=>'b'),
     4 => array(4=>'c')
    );foreach($arr as $i=>$vi) {
      foreach($arr as $j=>$vj) {
        if($i != $j && array_intersect_assoc($vi,$vj))
          unset($arr[$i]);
      }
    }var_export($arr);
      

  7.   

    array_unique
    (PHP 4 >= 4.0.1, PHP 5)array_unique -- 移除数组中重复的值
    说明
    array array_unique ( array array )
    好好看一下手册吧。。
    array_unique() 接受 array 作为输入并返回没有重复值的新数组。 
    注意键名保留不变。array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的 array 中同一个值的第一个出现的键名会被保留。 注: 当且仅当 (string) $elem1 === (string) $elem2 时两个单元被认为相同。就是说,当字符串的表达一样时。 第一个单元将被保留。