本来按照想法,递归函数用测试数组返回来的应该是一个有2个值的二维数组。但值得到了一个数组,加红部分是不是不能这么写,那要怎么写呢?求解
================================代码如下所示=============================================================
<?php
$strr =array("周四301_菲尼克斯水星_芝加哥天空_主胜_2.10","周二302_明尼苏达山猫_印第安纳狂热_主胜_1.20","周二302_明尼苏达山猫_印第安纳狂热_客胜_2.92");//这是分割数组的方法-----
function A($str){
//定义一个二维数组来存放根据逻辑分割出来的array
$newstr=array();
 for($i=0;$i<count($str)-1;$i++){
  $e1=explode("_",$str[$i]);
  $e2=explode("_",$str[$i+1]);
  if($e1[0].$e1[1].$e1[2]==$e2[0].$e2[1].$e2[2]){
    //先分割成(两个)数组再在递归调用A($str)
     A(array_splice($str,$i,$i));
     A(array_splice($str,$i+1,$i+1));

}
  }
  array_push($newstr,$str);
 return $newstr;
 }
//------------------------
$back=A($strr);
print_r($back);
?>
==========================================================================================================

解决方案 »

  1.   

    代碼如下:
    <?PHP$strr =array("周四301_菲尼克斯水星_芝加哥天空_主胜_2.10","周二302_明尼苏达山猫_印第安纳狂热_主胜_1.20","周二302_明尼苏达山猫_印第安纳狂热_客胜_2.92");
    Foreach($strr as $k=>$v) {
    $strr[$k]=Str2Arr($v,'_',False,False,False);//是否去除空arr項目,是否Trim掉外層,是否去除重複值
    }Print_r ($strr);
    //函数:将字符串重新组合成1维数组
    //参数:待重组的字符串,分隔符,是否去除空arr項目,是否Trim掉外層所有的指定符號和空格(不管有幾個),是否去除重複值
    Function Str2Arr($Str,$Cod="|",$Filter=True,$Trim=True,$Chongfu=True){
    $Arr=Array();
    IF($Trim){
    $Str=Trim($Str," ".$Cod."");
    }Else{
    $Str=(SubStr($Str,0,1)==$Cod)?SubStr($Str,1,(StrLen($Str)-1)):$Str;
    $Str=(SubStr($Str,-1,1)==$Cod)?SubStr($Str,0,(StrLen($Str)-1)):$Str;
    }
    IF(!$Str){
    Return $Arr;
    }
    $Arr=Explode($Cod,$Str);
    IF($Filter){
    $Arr=Array_Filter($Arr,'_nul');
    }
    IF($Chongfu){
    $Arr=Array_Unique($Arr);
    }
    Return $Arr;
    }輸出結果如下:
    Array
    (
        [0] => Array
            (
                [0] => 周四301
                [1] => 菲尼克斯水星
                [2] => 芝加哥天空
                [3] => 主胜
                [4] => 2.10
            )    [1] => Array
            (
                [0] => 周二302
                [1] => 明尼苏达山猫
                [2] => 印第安纳狂热
                [3] => 主胜
                [4] => 1.20
            )    [2] => Array
            (
                [0] => 周二302
                [1] => 明尼苏达山猫
                [2] => 印第安纳狂热
                [3] => 客胜
                [4] => 2.92
            ))
      

  2.   

    我想是我表达的不够准确:
    我用测试数组想要得到的结果是一个二维数组里包涵两个一维数组:
    Array([0]=>Array(),
           [1]=>Array())
    判断的依据是:“周二302_明尼苏达山猫_印第安纳狂热”相等,所以二维数组中包涵的一维数组的count()应该是2
      

  3.   

    我已经return一个数组了,为什么说我没接收呢。
      

  4.   

    比如一个数组{a_1,a_2,b_1,c_1,c_2}我想写一个函数,经过这个函数后return回来的结果是:
    array(array(a_1,b_1,c_1),array(a_1,b_1,c_2),array(a_2,b_2,c_1),array(a_2,b_2,c_2))
    这样的二维数组,顺序无所谓。
    我发现自己写的逻辑有误,应该要有两个for循环的。还没写出来,大家帮看看
      

  5.   

    楼主,3楼就不是真想来回答问题的,具体原因请点这里,还有这里。感觉你这个问题用这套递归是出不来的明显的,第一步操作就是把初始数组的每个元素取出来分割好赋给一个新数组二,然后把分割处理的新数组二压到新数组就好了
    运行一下下面的,看结果:
    $strr =array("周四301_菲尼克斯水星_芝加哥天空_主胜_2.10","周二302_明尼苏达山猫_印第安纳狂热_主胜_1.20","周二302_明尼苏达山猫_印第安纳狂热_客胜_2.92");
    function B($str)
    {
        //定义一个数组来存放根据逻辑分割出来的array
        $newstr=array();
        //分割传入的初始数组
        for($i=0;$i<count($str)-1;$i++)
        {
            $e{$i}=explode("_",$str[$i]);
        }
        //把分割出来的各数组压到一个数组里,组成一个新二维数组
        for($i=0;$i<count($str)-1;$i++)
        {
            array_push($newstr,$e{$i});
        }
        return $newstr;
    }
    $str2 = B($strr);
    print_r($str2);结果:
    Array ( [0] => Array ( [0] => 周四301 [1] => 菲尼克斯水星 [2] => 芝加哥天空 [3] => 主胜 [4] => 2.10 ) [1] => Array ( [0] => 周二302 [1] => 明尼苏达山猫 [2] => 印第安纳狂热 [3] => 主胜 [4] => 1.20 ) )
      

  6.   

    不错,你是有 Return $Arr;
    但是,谁来接收者两次调用后的值呢?
      A(array_splice($str,$i,$i));
      A(array_splice($str,$i+1,$i+1));
      

  7.   

    我那是递归调用,后面有return。这都说不通的话,那我就不解释了。看9楼的去,他有提到你
      

  8.   

    按你原始给出的数据$strr =array("周四301_菲尼克斯水星_芝加哥天空_主胜_2.10","周二302_明尼苏达山猫_印第安纳狂热_主胜_1.20","周二302_明尼苏达山猫_印第安纳狂热_客胜_2.92");你最后是想要什么输出呢,在这里说一下,7,8楼数据有点乱另外,你开始说,想返回一个有2个值的二维数组,但原代码却返回了一个的,因为你压数组时,只压了一个:array_push($newstr,$str);只被执行一次,当然只有一个了
      

  9.   

    本帖最后由 xuzuning 于 2012-10-01 19:20:35 编辑
      

  10.   

    何必递归
    <?php
    $strr =array("周四301_菲尼克斯水星_芝加哥天空_主胜_2.10","周二302_明尼苏达山猫_印第安纳狂热_主胜_1.20","周二302_明尼苏达山猫_印第安纳狂热_客胜_2.92");function B($list) {
    $midList = array();
    foreach($list as $line) {
    preg_match_all('/(.*?_.*?_.*?)_(.*)/', $line, $match, PREG_SET_ORDER);
    $match = $match[0]; if(!isset($midList[$match[1]])) {
    $midList[$match[1]] = array();
    }
    $midList[$match[1]][] = $match[2]; }
    $newList = array();
    foreach($midList as $match => $oddses) {
    $newList[] = array();
    $matchArr = explode('_', $match);
    foreach($oddses as $odds) {
    $newList[count($newList) - 1][] = array_merge($matchArr, explode('_', $odds));
    }
    }
    return $newList;



    }echo '<pre>';
    print_r(B($strr));
    exit;[code]
    Array
    (
        [0] => Array
            (
                [0] => Array
                    (
                        [0] => 周四301
                        [1] => 菲尼克斯水星
                        [2] => 芝加哥天空
                        [3] => 主胜
                        [4] => 2.10
                    )        )    [1] => Array
            (
                [0] => Array
                    (
                        [0] => 周二302
                        [1] => 明尼苏达山猫
                        [2] => 印第安纳狂热
                        [3] => 主胜
                        [4] => 1.20
                    )            [1] => Array
                    (
                        [0] => 周二302
                        [1] => 明尼苏达山猫
                        [2] => 印第安纳狂热
                        [3] => 客胜
                        [4] => 2.92
                    )        ))
    [/code]
      

  11.   

    运行结果Array
    (
        [0] => Array
            (
                [0] => Array
                    (
                        [0] => 周四301
                        [1] => 菲尼克斯水星
                        [2] => 芝加哥天空
                        [3] => 主胜
                        [4] => 2.10
                    )        )    [1] => Array
            (
                [0] => Array
                    (
                        [0] => 周二302
                        [1] => 明尼苏达山猫
                        [2] => 印第安纳狂热
                        [3] => 主胜
                        [4] => 1.20
                    )            [1] => Array
                    (
                        [0] => 周二302
                        [1] => 明尼苏达山猫
                        [2] => 印第安纳狂热
                        [3] => 客胜
                        [4] => 2.92
                    )        ))
      

  12.   

    我用测试数组要得到的结果是:
    Array
    (
        [0] => Array
            (
                [0] => Array
                    (
                        [0] => 周四301
                        [1] => 菲尼克斯水星
                        [2] => 芝加哥天空
                        [3] => 主胜
                        [4] => 2.10
                    )
               [1] => Array
                    (
                        [0] => 周二302
                        [1] => 明尼苏达山猫
                        [2] => 印第安纳狂热
                        [3] => 客胜
                        [4] => 2.92
                    )        )    [1] => Array
            (
                 [0] => Array
                    (
                        [0] => 周四301
                        [1] => 菲尼克斯水星
                        [2] => 芝加哥天空
                        [3] => 主胜
                        [4] => 2.10
                    )
                [1] => Array
                    (
                        [0] => 周二302
                        [1] => 明尼苏达山猫
                        [2] => 印第安纳狂热
                        [3] => 主胜
                        [4] => 1.20
                    )        ))
      

  13.   

    那改造一下我15楼程序的第二个foreach应该很容易就得出了
      

  14.   

    说白了,就是把测试数组的用"_"分割后前3项相等的值分割出来。所以原本测试数组有3个值,其中有两个值的“分割后前3项相等”。所以最终得到的是一个二维数组,包括两个含两项的数组。使之在包涵的数组中的值的“分割后前3项不相等”。over
      

  15.   

    我本来要用递归写,但我也知道能不用递归就尽量别用,但正则表达式是真没掌握好。我去研究一下15楼的代码。now
      

  16.   

    发现还是不需要递归<?php
    $strr =array("第一场301_菲尼克斯水星_芝加哥天空_主胜_2.10","第一场301_菲尼克斯水星_芝加哥天空_客胜_12.10","第二场301_菲尼克斯水星_芝加哥天空_主胜_2.10","第二场301_菲尼克斯水星_芝加哥天空_客胜_12.10","第三场302_明尼苏达山猫_印第安纳狂热_主胜_1.20","第三场302_明尼苏达山猫_印第安纳狂热_客胜_2.92");function B($list) {
    $midList = array();
    foreach($list as $line) {
    preg_match_all('/((.*?_.*?_.*?)_(.*))/', $line, $match, PREG_SET_ORDER);
    $match = $match[0]; if(!isset($midList[$match[2]])) {
    $midList[$match[2]] = array();
    }
    $midList[$match[2]][] = $match[1]; }
    $newList = array();
    // var_dump($midList);exit;
    $i = 0;
    foreach($midList as $match => $oddses) {
    // $newList[] = array();
    $newList = _combinate($newList, $oddses); }

    return $newList;



    }
    function _combinate($arr, $newItems) {
    $newArr = array();
    if(empty($arr)) {
    foreach($newItems as $item) {
    $newArr[] = array($item);
    }
    return $newArr;
    }

    foreach($newItems  as $newItem) {
    foreach($arr as $oldItems) {
    $oldItems[] = $newItem;
    $newArr[] = $oldItems;
    }
    }
    return $newArr;
    }
    echo '<pre>';
    print_r(B($strr));
    exit;
    输出
    Array
    (
        [0] => Array
            (
                [0] => 第一场301_菲尼克斯水星_芝加哥天空_主胜_2.10
                [1] => 第二场301_菲尼克斯水星_芝加哥天空_主胜_2.10
                [2] => 第三场302_明尼苏达山猫_印第安纳狂热_主胜_1.20
            )    [1] => Array
            (
                [0] => 第一场301_菲尼克斯水星_芝加哥天空_客胜_12.10
                [1] => 第二场301_菲尼克斯水星_芝加哥天空_主胜_2.10
                [2] => 第三场302_明尼苏达山猫_印第安纳狂热_主胜_1.20
            )    [2] => Array
            (
                [0] => 第一场301_菲尼克斯水星_芝加哥天空_主胜_2.10
                [1] => 第二场301_菲尼克斯水星_芝加哥天空_客胜_12.10
                [2] => 第三场302_明尼苏达山猫_印第安纳狂热_主胜_1.20
            )    [3] => Array
            (
                [0] => 第一场301_菲尼克斯水星_芝加哥天空_客胜_12.10
                [1] => 第二场301_菲尼克斯水星_芝加哥天空_客胜_12.10
                [2] => 第三场302_明尼苏达山猫_印第安纳狂热_主胜_1.20
            )    [4] => Array
            (
                [0] => 第一场301_菲尼克斯水星_芝加哥天空_主胜_2.10
                [1] => 第二场301_菲尼克斯水星_芝加哥天空_主胜_2.10
                [2] => 第三场302_明尼苏达山猫_印第安纳狂热_客胜_2.92
            )    [5] => Array
            (
                [0] => 第一场301_菲尼克斯水星_芝加哥天空_客胜_12.10
                [1] => 第二场301_菲尼克斯水星_芝加哥天空_主胜_2.10
                [2] => 第三场302_明尼苏达山猫_印第安纳狂热_客胜_2.92
            )    [6] => Array
            (
                [0] => 第一场301_菲尼克斯水星_芝加哥天空_主胜_2.10
                [1] => 第二场301_菲尼克斯水星_芝加哥天空_客胜_12.10
                [2] => 第三场302_明尼苏达山猫_印第安纳狂热_客胜_2.92
            )    [7] => Array
            (
                [0] => 第一场301_菲尼克斯水星_芝加哥天空_客胜_12.10
                [1] => 第二场301_菲尼克斯水星_芝加哥天空_客胜_12.10
                [2] => 第三场302_明尼苏达山猫_印第安纳狂热_客胜_2.92
            ))
      

  17.   

    对了,确实没return回去。
    是我搞错了,错怪了你。
    但怎么同时return 回去两个递归调用呢
      

  18.   

    哪两个重复举例说明
    你把strr替换回你原先的就知道我的程序是不是符合用例
      

  19.   

    比如1:array(a_1,a_2,b_1)------(经过函数调用后)---array(array(a_1,b_1),array(a_2,b_1))
         以开头字母区分。
    比如2:array(a_1,a_2,b_1,b_2,c_1))------(经过函数调用后)---array(array(a_1,b_1,c_1),array(a_1,b_2,c_1),array(a_2,b_1,c_1),array(a_2,b_2,c_1))我这样说能明白我的意思吗?只不过我之前的测试数组要求是“第一场301_菲尼克斯水星_芝加哥天空”前面这些相同为区别。
      

  20.   

    呵呵,睡醒了来上CSDN,看了一下你写的19楼的结果字符串,现在总结一下,看是不是这个意思:
    原始数据里,前三项是一个整体,处理后,第一重数组里的前三项整体不能重复
    原始数据简化如下:A_主胜_2.10 B_主胜_1.20 B_客胜_2.92,而这三项其实是一整体,不能分割,只能总体排列
    要得到的输出结果为2组:
    A_主胜_2.10
    B_客胜_2.92A_主胜_2.10
    B_主胜_1.20呼,总算有点明白楼主要什么了,好难表达清楚...
    上面9楼代码里,for循环那应该是count($str)而不是count($str)-1。从我们上面的结果入手 ,继续处理就好了,再加个数据比较的函数
    看下面的,和你要的结果一样:
    function B($str)
    {
        $newstr=array();
        for($i=0;$i<count($str);$i++)
        {
            $e{$i}=explode("_",$str[$i]);
        }
        for($i=0;$i<count($str);$i++)
        {
            array_push($newstr,$e{$i});
        }
        return $newstr;
    }
    function C($str1, $str2)
    {
        if ($str1[0].$str1[1].$str1[2]==$str2[0].$str2[1].$str2[2])
        {
            return 0;
        }
        else
        {
            return 1;
        }
    }
    $str2 = B($strr);
    for ($i=0; $i<count($str2); $i++)
    {
        for ($j=$i+1; $j<count($str2); $j++)
        {
            $temp = array();
            if (C($str2[$i], $str2[$j]))
            {
                $temp[]=$str2[$i];
                $temp[]=$str2[$j];
                $result[]=$temp;
            }       
        }
    }
    echo "(<br>";
    foreach($result as $key=>$value)
    {
        echo "&nbsp;&nbsp;&nbsp;&nbsp;[".$key."]=><br>";
        foreach($value as $key2=>$value2)
        {
            echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[".$key2."]=>";
            print_r($value2);
            echo "<br>";
        }
    }
    echo ")";
    输出结果:
    (
        [0]=>
            [0]=>Array ( [0] => 周四301 [1] => 菲尼克斯水星 [2] => 芝加哥天空 [3] => 主胜 [4] => 2.10 ) 
            [1]=>Array ( [0] => 周二302 [1] => 明尼苏达山猫 [2] => 印第安纳狂热 [3] => 主胜 [4] => 1.20 ) 
        [1]=>
            [0]=>Array ( [0] => 周四301 [1] => 菲尼克斯水星 [2] => 芝加哥天空 [3] => 主胜 [4] => 2.10 ) 
            [1]=>Array ( [0] => 周二302 [1] => 明尼苏达山猫 [2] => 印第安纳狂热 [3] => 客胜 [4] => 2.92 ) 
    )
    PS:原来不搞PHP,写出来的代码其他风格较重,见谅呀,看acabin的代码就舒服多了。楼主也不是搞PHP的吧,上来就是for循环另外,我坚持认为10楼就不是来帮人解决问题的,具体原因见本帖及这里,还有这里
      

  21.   

    最前面是原始数据定义:
    $strr =array("周四301_菲尼克斯水星_芝加哥天空_主胜_2.10","周二302_明尼苏达山猫_印第安纳狂热_主胜_1.20","周二302_明尼苏达山猫_印第安纳狂热_客胜_2.92");
    上面的没粘上
      

  22.   

    人家要用递归,自然有人家的道理
    为什么不用递归可以解决,用递归就不能解决呢?
    并且楼主也意识到递归点有些问题了
    $strr =array(
      "周四301_菲尼克斯水星_芝加哥天空_主胜_2.10",
      "周二302_明尼苏达山猫_印第安纳狂热_主胜_1.20",
      "周二302_明尼苏达山猫_印第安纳狂热_客胜_2.92",
    );//这是分割数组的方法-----
    function A($str){
      //定义一个二维数组来存放根据逻辑分割出来的array
      $newstr = array();
      for($i=0;$i<count($str)-1;$i++){
        $e1 = explode("_",$str[$i]);
        $e2 = explode("_",$str[$i+1]);
        if($e1[0].$e1[1].$e1[2]==$e2[0].$e2[1].$e2[2]){
          //先分割成(两个)数组再在递归调用A($str)
          $t = $str;
          array_splice($str,$i+1, 1);
          $newstr = array_merge($newstr, A($str));
          $str = $t;
          array_splice($str,$i, 1);
          $newstr = array_merge($newstr, A($str));
        }
      }
      if(! $newstr) array_push($newstr,$str);
      return $newstr;
    }
    //------------------------
    $back = A($strr);
    print_r($back);
    Array
    (
        [0] => Array
            (
                [0] => 周四301_菲尼克斯水星_芝加哥天空_主胜_2.10
                [1] => 周二302_明尼苏达山猫_印第安纳狂热_主胜_1.20
            )    [1] => Array
            (
                [0] => 周四301_菲尼克斯水星_芝加哥天空_主胜_2.10
                [1] => 周二302_明尼苏达山猫_印第安纳狂热_客胜_2.92
            ))
      

  23.   

    首先感谢终于有一个人明白我的意图了,你的代码我看了一下,没用递归我就知道一定不能达到我的要求。经测试:代码中foreach里notice(这里要强制转换成array或者判断is_array),还有忘了声明$result数组。在测试数组$str_1 =array("周四301_菲尼克斯水星_芝加哥天空_主胜_2.10","周二302_明尼苏达山猫_印第安纳狂热_主胜_1.20","周二302_明尼苏达山猫_印第安纳狂热_客胜_2.92");没有问题、、、、、
    但测试数组$str_2=array("a_a_a_1","a_a_a_2","b_b_b_1","b_b_b_2","c_c_c_1","a_a_a_3");确出问题了。
    PS:我确实是刚学php没多久,总觉得不得劲,之前学过点java,属于新手。acabin的代码确实小清新,但我觉得没用递归还是解决不了的,去研究一下他的代码先。
      

  24.   

    是的,之前我写的的确没return。但你现在写的递归也有问题,它只递归了一成。我觉得这里递归主要有一问题就是怎么分两半同时递归调用。
    你的代码用$str_2=array("a_a_a_1","a_a_a_2","b_b_b_1","b_b_b_2","c_c_c_1","a_a_a_3");测试========》》》》结果。
    Array
    (
        [0] => Array
            (
                [0] => a_a_a_1
                [1] => b_b_b_1
                [2] => c_c_c_1
                [3] => a_a_a_3
            )    [1] => Array
            (
                [0] => a_a_a_1
                [1] => b_b_b_2
                [2] => c_c_c_1
                [3] => a_a_a_3
            )    [2] => Array
            (
                [0] => a_a_a_2
                [1] => b_b_b_1
                [2] => c_c_c_1
                [3] => a_a_a_3
            )    [3] => Array
            (
                [0] => a_a_a_2
                [1] => b_b_b_2
                [2] => c_c_c_1
                [3] => a_a_a_3
            )    [4] => Array
            (
                [0] => a_a_a_2
                [1] => b_b_b_1
                [2] => c_c_c_1
                [3] => a_a_a_3
            )    [5] => Array
            (
                [0] => a_a_a_2
                [1] => b_b_b_2
                [2] => c_c_c_1
                [3] => a_a_a_3
            ))
    说明还没递归完全,里面还是有a_a_a相等的。
      

  25.   

    我惊喜的发现acabin在27楼的代码是正确的,测试了3组数据都OK。
    大家可以去围观学习一下,这个不用递归的方法。
    如果有递归正确的方法,欢迎告知。
      

  26.   

    围观27楼,问题解决了就好,感觉acabin是专业人士我那个只能解决前三项整体为2项的数据,在压数组的时候没用循环,用了2句数组赋值,出来的结果里每项肯定只有2个子项我也是PHP新手,呵呵,在这帖里学习到了不少东东,原来数组输出,直接用PRE修饰就很直观了继续学习
      

  27.   

    本帖最后由 xuzuning 于 2012-10-02 11:38:27 编辑
      

  28.   


    其实我自己调试要输出结果的时候都是用var_dump的;xdebug的var_dump比print_r好用很多。
    推荐使用。
      

  29.   

    这里的xdebug能像myeclipse那样跟踪程序执行吗?我昨天晚上配置好了xdebug,不知道怎么用。
      

  30.   

    xdebug支持某个debug协议(具体是哪个忘了)
    在php.ini里面做好配置后可以与很多开发工具联调
      

  31.   

    var_dump还不大懂,呵呵,不过我现在在用NetBeans IDE,跟踪调试很方便,就是调的xdebug,配置起来也很快,程序安装上,添加下面几句到php.ini中就可以用了
    zend_extension = "D:/wamp/bin/php/php5.3.13/zend_ext/php_xdebug-2.2.0-5.3-vc9-x86_64.dll"[xdebug]
    xdebug.remote_enable=on 
    xdebug.remote_handler=dbgp 
    xdebug.remote_host=localhost 
    xdebug.remote_port=9000 
      

  32.   

    明天晚上结贴:问题解决了,这里总结一下。
    -----------可爱的分割线------------------
    27楼是最佳答案41楼的代码是按照我的思路和代码写的,但没有去除二维数组里的多余项,我自己写了一个去除二维数组相等项的代码(array_unqie只能去除一维数组的相同项,所以要自己来实现),也实现了。
    ----------------------再分割一次-------
    我多次测试了一下:时间效率和空间效率都是27楼的更佳;41楼次之。但由于我的需求不会处理大数据,所以都无所谓,关键看思路你喜欢哪个。
    --》27:先分组,在排列。
    --》41:先递归排序,再去重复项。
    -----------------------------------------------
    我最先想到的是27楼的方法,但处理起来没做到他那么简洁,所以开始的时候放弃了这种思路;
    再者我就想到了递归,之后我就来这里问了。                                                                    谢谢大家的慷慨帮助
                                                                        除了47楼广告党(鄙视)
                                                                           午夜十二点