$arr1 = array(array("username"=>"zhang","y_1"=>"t","y_2"=>"f","y_3"=>"f","y_4"=>"f","y_5"=>"f"),              array("username"=>"tan","y_1"=>"f","y_2"=>"t","y_3"=>"f","y_4"=>"f","y_5"=>"f"),              array("username"=>"lu","y_1"=>"f","y_2"=>"t","y_3"=>"f","y_4"=>"f","y_5"=>"f"),              array("username"=>"zhang","y_1"=>"f","y_2"=>"t","y_3"=>"t","y_4"=>"f","y_5"=>"f"),              array("username"=>"wu","y_1"=>"t","y_2"=>"t","y_3"=>"f","y_4"=>"f","y_5"=>"f"),
      
      array("username"=>"zhang","y_1"=>"t","y_2"=>"f","y_3"=>"f","y_4"=>"f","y_5"=>"t"),
         );將數組中username相同的數組重新組合,但y_1........y_5 的值在合並前先判斷, 如果有一個值為“t”,則值賦為“t”,都為"f"的話,就賦為"f"。
如下是按上面的數組重新得出的新數組,請問在php用什麼辦法可以對數組進行重新排列得到如下的結果:$arr1 = array(array("username"=>"zhang","y_1"=>"t","y_2"=>"t","y_3"=>"t","y_4"=>"f","y_5"=>"t"),              array("username"=>"tan","y_1"=>"f","y_2"=>"t","y_3"=>"f","y_4"=>"f","y_5"=>"f"),              array("username"=>"lu","y_1"=>"f","y_2"=>"t","y_3"=>"f","y_4"=>"f","y_5"=>"f"),              array("username"=>"wu","y_1"=>"t","y_2"=>"t","y_3"=>"f","y_4"=>"f","y_5"=>"f"),
      
         );

解决方案 »

  1.   

    $arr1 = array(array("username"=>"zhang","y_1"=>"t","y_2"=>"f","y_3"=>"f","y_4"=>"f","y_5"=>"f"),  array("username"=>"tan","y_1"=>"f","y_2"=>"t","y_3"=>"f","y_4"=>"f","y_5"=>"f"),  array("username"=>"lu","y_1"=>"f","y_2"=>"t","y_3"=>"f","y_4"=>"f","y_5"=>"f"),  array("username"=>"zhang","y_1"=>"f","y_2"=>"t","y_3"=>"t","y_4"=>"f","y_5"=>"f"),  array("username"=>"wu","y_1"=>"t","y_2"=>"t","y_3"=>"f","y_4"=>"f","y_5"=>"f"),
      
    array("username"=>"zhang","y_1"=>"t","y_2"=>"f","y_3"=>"f","y_4"=>"f","y_5"=>"t"),
      );foreach($arr1 as $v) {
      $f = array_count_values($v);
      if(! $r[$v['username']] || $f==5) $r[$v['username']] = $v;
    }
    $arr1 = array_slice($r, 0);
    print_r($arr1);Array
    (
        [zhang] => Array
            (
                [username] => zhang
                [y_1] => t
                [y_2] => f
                [y_3] => f
                [y_4] => f
                [y_5] => f
            )    [tan] => Array
            (
                [username] => tan
                [y_1] => f
                [y_2] => t
                [y_3] => f
                [y_4] => f
                [y_5] => f
            )    [lu] => Array
            (
                [username] => lu
                [y_1] => f
                [y_2] => t
                [y_3] => f
                [y_4] => f
                [y_5] => f
            )    [wu] => Array
            (
                [username] => wu
                [y_1] => t
                [y_2] => t
                [y_3] => f
                [y_4] => f
                [y_5] => f
            ))
      

  2.   

    謝謝xuzuning(唠叨),你的辦法是實現了,我到實際環境測試下,一會再結貼給分,遇到問題再上來請教您啦。感謝!
      

  3.   

    不好意思,不對啊,我要的[zhang]結果是:[zhang] => Array
      (
      [username] => zhang
      [y_1] => t
      [y_2] => t
      [y_3] => t
      [y_4] => f
      [y_5] => t
      )
    相同名稱,在相同y_1的情況上,以t值為最終結果。
      

  4.   

    哦,是这样foreach($arr1 as $v) {
      if(! $r[$v['username']]) $r[$v['username']] = $v;
      foreach($v as $k=>$t) {
        if($t == 't') $r[$v['username']][$k] = 't';
      }
    }
    $arr1 = array_slice($r, 0);
    print_r($arr1);Array
    (
        [zhang] => Array
            (
                [username] => zhang
                [y_1] => t
                [y_2] => t
                [y_3] => t
                [y_4] => f
                [y_5] => t
            )
     
        [tan] => Array
            (
                [username] => tan
                [y_1] => f
                [y_2] => t
                [y_3] => f
                [y_4] => f
                [y_5] => f
            )
     
        [lu] => Array
            (
                [username] => lu
                [y_1] => f
                [y_2] => t
                [y_3] => f
                [y_4] => f
                [y_5] => f
            )
     
        [wu] => Array
            (
                [username] => wu
                [y_1] => t
                [y_2] => t
                [y_3] => f
                [y_4] => f
                [y_5] => f
            )
     
    )