Guest User

kerash

a guest
Apr 23rd, 2014
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.75 KB | None | 0 0
  1. function strangeArray($array) {
  2.     $original = $array;
  3.     $uniq = array_unique($original);
  4.     $output_array = array();
  5.     $append_array = array();
  6.     $dup_status = false;
  7.      
  8.     foreach($uniq as $uniq_index => $uv) {
  9.      
  10.             $origIndex = array_search($uv, $original);
  11.            
  12.             unset($original[$origIndex]);
  13.            
  14.             if( ( $dup_status or $uniq_index==0 ) and in_array ($uv, $original) )
  15.             {
  16.                     $dup_status = true;
  17.                     array_push($output_array,$uv);
  18.                     $dupOrigIndex = array_search($uv, $original);
  19.                     unset($original[$dupOrigIndex]);
  20.                    
  21.             } else if(in_array( $uv, $original ) ) {
  22.                     array_push($output_array,$uv);        
  23.                     array_push($append_array,$uv);
  24.                    
  25.                     $dupOrigIndex = array_search($uv, $original);
  26.                     unset($original[$dupOrigIndex]);
  27.                    
  28.             } else if(!$dup_status) {
  29.      
  30.                     array_push($output_array,$uv);
  31.                    
  32.                     $dupOrigIndex = array_search($uv, $original);
  33.                     if($dupOrigIndex) {
  34.                             unset($original[$dupOrigIndex]);
  35.                     }
  36.                    
  37.             } else {
  38.                 break;
  39.             }
  40.     }
  41.      
  42.     if($dup_status) {
  43.             foreach($uniq as $uv) {
  44.                     array_push($output_array,$uv);
  45.             }
  46.     } else {
  47.             foreach($append_array as $apv) {
  48.                     array_push($output_array,$apv);
  49.             }
  50.     }
  51.     return $output_array;
  52. }
  53.  
  54. $o_arr1 = array(2,2,3,3,4,4,5,5,6,7,8,9,10,11,12);
  55. $arr1 = strangeArray($o_arr1);
  56. $o_arr2 = array(2,3,4,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12);
  57. $arr2 = strangeArray($o_arr2);
  58. echo json_encode($o_arr1)."<br />".json_encode($arr1);
  59. echo "<hr />";
  60. echo json_encode($o_arr2)."<br />".json_encode($arr2);
  61.  
  62. /* --- print out result
  63. [2,2,3,3,4,4,5,5,6,7,8,9,10,11,12]
  64. [2,3,4,5,2,3,4,5,6,7,8,9,10,11,12]
  65. -----------------------------------
  66. [2,3,4,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12]
  67. [2,3,4,5,6,7,8,9,10,11,12,6,7,8,9,10,11,12]
  68. */
Advertisement
Add Comment
Please, Sign In to add comment