有这样一个二维数组,我想把重复的值去掉,并且还要得到重复值的个数越多,数组的的排序越靠前
Array
(
    [0] => Array
        (
            [0] => 婚姻是爱情的坟墓吗?
        )    [1] => Array
        (
            [0] => 该不该发起战争
        )    [2] => Array
        (
            [0] => 该不该发起战争
        )    [3] => Array
        (
            [0] => 输入话题标题
        )    [4] => Array
        (
            [0] => 输入话题标题
        )    [5] => Array
        (
            [0] => 输入话题标题
        ))
想要的结果是:
Array
(
    [0] => Array
        (
            [0] => 输入话题标题
        )    [1] => Array
        (
            [0] => 该不该发起战争
        )    [2] => Array
        (
            [0] => 婚姻是爱情的坟墓吗?
        )
)
请问要怎么做呀????

解决方案 »

  1.   

    $a = array(
    0 => array(0 => '婚姻是爱情的坟墓吗?'),
    1 => array(0 => '该不该发起战争'),
    2 => array(0 => '该不该发起战争'),
    3 => array(0 => '输入话题标题'),
    4 => array(0 => '输入话题标题'),
    5 => array(0 => '输入话题标题')
    );
    $b = array();
    foreach($a as $v){
    if(isset($b[$v[0]])){
    ++$b[$v[0]];
    }else{
    $b[$v[0]] = 1;
    }
    }
    $b = array_flip($b);
    echo '<pre>';print_r($b);
      

  2.   

    $a = array(
    0 => array(0 => '婚姻是爱情的坟墓吗?'),
    1 => array(0 => '该不该发起战争'),
    2 => array(0 => '该不该发起战争'),
    3 => array(0 => '输入话题标题'),
    4 => array(0 => '输入话题标题'),
    5 => array(0 => '输入话题标题')
    );
    $b = array();
    foreach($a as $v){
    if(isset($b[$v[0]])){
    ++$b[$v[0]];
    }else{
    $b[$v[0]] = 1;
    }
    }
    $b = array_reverse(array_flip($b));
    echo '<pre>';print_r($b);/*
    输出:
    Array
    (
        [0] => 输入话题标题
        [1] => 该不该发起战争
        [2] => 婚姻是爱情的坟墓吗?
    )
    */
      

  3.   

    $a = array(
    0 => array(0 => '婚姻是爱情的坟墓吗?'),
    1 => array(0 => '该不该发起战争'),
    2 => array(0 => '该不该发起战争'),
    3 => array(0 => '输入话题标题'),
    4 => array(0 => '输入话题标题'),
    5 => array(0 => '输入话题标题')
    );
    $t = array_map('current', $a);//降维
    $c = array_unique($t);//去重
    $a = array_chunk($c, 1);//拆分
    print_r($a);Array
    (
        [0] => Array
            (
                [0] => 婚姻是爱情的坟墓吗?
            )    [1] => Array
            (
                [0] => 该不该发起战争
            )    [2] => Array
            (
                [0] => 输入话题标题
            ))
      

  4.   

    看错了
    $a = array(
    0 => array(0 => '婚姻是爱情的坟墓吗?'),
    1 => array(0 => '该不该发起战争'),
    2 => array(0 => '该不该发起战争'),
    3 => array(0 => '输入话题标题'),
    4 => array(0 => '输入话题标题'),
    5 => array(0 => '输入话题标题')
    );
    $b = array();
    foreach($a as $v){
    if(isset($b[serialize($v)])){
    ++$b[serialize($v)];
    }else{
    $b[serialize($v)] = 1;
    }
    }
    $b = array_reverse(array_flip($b));
    foreach($b as &$v){
    $v = unserialize($v);
    }
    echo '<pre>';print_r($b);/*
    输出:
    Array
    (
        [0] => Array
            (
                [0] => 输入话题标题
            )    [1] => Array
            (
                [0] => 该不该发起战争
            )    [2] => Array
            (
                [0] => 婚姻是爱情的坟墓吗?
            ))
    */
      

  5.   

    $a = array(
    0 => array(0 => '婚姻是爱情的坟墓吗?'),
    1 => array(0 => '该不该发起战争'),
    2 => array(0 => '该不该发起战争'),
    3 => array(0 => '输入话题标题'),
    4 => array(0 => '输入话题标题'),
    5 => array(0 => '输入话题标题')
    );
    $b = array();
    foreach($a as $v){
    if(isset($b[serialize($v)])){
    ++$b[serialize($v)];
    }else{
    $b[serialize($v)] = 1;
    }
    }
    $b = array_flip($b);
    ksort($b);
    $b = array_reverse($b);
    foreach($b as &$v){
    $v = unserialize($v);
    }
    echo '<pre>';print_r($b);
      

  6.   

    哦,还有 并且还要得到重复值的个数越多,数组的的排序越靠前
    $a = array(
    0 => array(0 => '婚姻是爱情的坟墓吗?'),
    1 => array(0 => '该不该发起战争'),
    2 => array(0 => '该不该发起战争'),
    3 => array(0 => '输入话题标题'),
    4 => array(0 => '输入话题标题'),
    5 => array(0 => '输入话题标题')
    );
    $t = array_map('current', $a);//降维
    $p = array_count_values($t);//统计次数
    arsort($p);//降序
    $c = array_flip($p);//交换键、值
    $a = array_chunk($c, 1);//拆分
    Array
    (
        [0] => Array
            (
                [0] => 输入话题标题
            )    [1] => Array
            (
                [0] => 该不该发起战争
            )    [2] => Array
            (
                [0] => 婚姻是爱情的坟墓吗?
            ))
      

  7.   

    你把老大的代码再翻转一下不就行了。在最后加上:$a=array_reverse($a);print_r($a);
      

  8.   

    这样做 有个弊端吧,键与值反转的时候,出现次数一样得那几条 就只显示一个了
    Array
    (
        [输入话题标题] => 4
        [哈哈] => 1
        [该不该发起战争] => 1
        [婚姻是爱情的坟墓吗?] => 1
    )结果只剩下两个了
      

  9.   


    $a = array(
    0 => array(0 => '婚姻是爱情的坟墓吗?'),
    1 => array(0 => '该不该发起战争'),
    2 => array(0 => '该不该发起战争'),
    3 => array(0 => '输入话题标题'),
    4 => array(0 => '输入话题标题'),
    5 => array(0 => '输入话题标题'),
    6 => array(0 => 'abc'),
    7 => array(0 => 'abc'),
    8 => array(0 => 'abc')
    );
    $b = array();
    foreach($a as $v){
    if(isset($b[serialize($v)])){
    ++$b[serialize($v)];
    }else{
    $b[serialize($v)] = 1;
    }
    }
    $c = array();
    foreach($b as $k => $v){
    $k = unserialize($k);
    if(isset($c[$v])){
    $c[$v + 1] = $k;
    }else{
    $c[$v] = $k;
    }
    }
    ksort($c);
    $c = array_reverse($c);
    echo '<pre>';print_r($c);