This week only. Pastebin PRO Accounts Christmas Special! Don't miss out!Want more features on Pastebin? Sign Up, it's FREE!
Guest

Untitled

By: netjunky on Oct 18th, 2011  |  syntax: PHP  |  size: 2.12 KB  |  views: 51  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  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] );
clone this paste RAW Paste Data