netjunky

Untitled

Oct 18th, 2011
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.12 KB | None | 0 0
  1. // I have some array in this property $this->categories and `dis` function is just nice way to print array.
  2. /*
  3. Here are my array examples
  4. */
  5.  
  6. $categories = array(
  7.     1 => array(
  8.         'a', 'b', 'c',
  9.     ),
  10.     2 => array(
  11.         'a', 'b', 'c', 'd', 'e', 'f', 'g',
  12.     ),
  13.     3 => array(
  14.         'a', 'b', 'c', 'd', 'e', 'f',
  15.         'g', 'h', 'i', 'j', 'k', 'l',
  16.     ),
  17.     4 => array(
  18.         'a', 'b',
  19.     ),
  20.     5 => array(
  21.         'a',
  22.     ),
  23.     6 => array(
  24.         'a', 'b', 'c', 'd', 'e',
  25.     ),
  26.     7 => array(
  27.         'a', 'b', 'd', 'e', 'f',
  28.         'g', 'h', 'i', 'j', 'k', 'l',
  29.     ),
  30.     8 => array(
  31.         'a', 'b', 'd', 'e', 'f',
  32.         'g', 'h', 'i', 'j', 'k', 'l',
  33.     ),
  34.     9 => array(
  35.         'a', 'b',
  36.         'g', 'h',
  37.     ),
  38. );
  39.  
  40. function dividingArray( $array, $columnsMax = 3 )
  41. {
  42.     dis( $array );
  43.  
  44.     $listlen   = count( $array );
  45.     $partlen   = floor( $listlen / $columnsMax );
  46.     $partrem   = $listlen % $columnsMax;
  47.     $partition = array();
  48.     $mark      = 0;
  49.  
  50.     for ( $px = 0; $px < $columnsMax; $px++ )
  51.     {
  52.         $incr             = ( $px < $partrem ) ? $partlen + 1 : $partlen;
  53.         $partition[ $px ] = array_slice( $array, $mark, $incr );
  54.         $mark             += $incr;
  55.     }
  56.  
  57.     dis( $partition );
  58.  
  59.     $result = array();
  60.  
  61.     for ( $i = 0; $i < count( $partition[0] ); $i++ )
  62.     {
  63.         $tmp = array();
  64.  
  65.         foreach ( $partition as $column )
  66.         {
  67.             if ( isset( $column[ $i ] ) )
  68.             {
  69.                 $tmp[] = $column[ $i ];
  70.             }
  71.             else
  72.             {
  73.                 $tmp[] = '';
  74.             }
  75.         }
  76.  
  77.         $result[] = $tmp;
  78.     }
  79.  
  80.     dis( $result );
  81. }
  82.  
  83. function dis( $var )
  84. {
  85.     echo '<pre>';
  86.     print_r( $var );
  87.     echo '</pre>';
  88. }
  89.  
  90. // Usage for testing
  91. echo '<h1>Test: 1</h1>';
  92. dividingArray( $categories[1] );
  93.  
  94. echo '<h1>Test: 2</h1>';
  95. dividingArray( $categories[2] );
  96.  
  97. echo '<h1>Test: 3</h1>';
  98. dividingArray( $categories[3] );
  99.  
  100. echo '<h1>Test: 4</h1>';
  101. dividingArray( $categories[4] );
  102.  
  103. echo '<h1>Test: 5</h1>';
  104. dividingArray( $categories[5] );
  105.  
  106. echo '<h1>Test: 6</h1>';
  107. dividingArray( $categories[6] );
  108.  
  109. echo '<h1>Test: 7</h1>';
  110. dividingArray( $categories[7] );
  111.  
  112. echo '<h1>Test: 8</h1>';
  113. dividingArray( $categories[8] );
  114.  
  115. echo '<h1>Test: 9</h1>';
  116. dividingArray( $categories[9] );
  117.  
  118. echo '<h1>Test: 10</h1>';
  119. dividingArray( $categories[10] );
Add Comment
Please, Sign In to add comment