[ Index ]

PHP Cross Reference of Limb3

title

Body

[close]

/core/src/ -> lmbArrayHelper.class.php (source)

   1  <?php
   2  /*

   3   * Limb PHP Framework

   4   *

   5   * @link http://limb-project.com

   6   * @copyright  Copyright &copy; 2004-2007 BIT(http://bit-creative.com)

   7   * @license    LGPL http://www.gnu.org/copyleft/lesser.html

   8   */
   9  
  10  /**

  11   * class lmbArrayHelper.

  12   *

  13   * @package core

  14   * @version $Id$

  15   */
  16  class lmbArrayHelper
  17  {
  18    function map($map_array, $src_array, &$dest_array)
  19    {
  20      foreach($map_array as $src => $dest)
  21        if(isset($src_array[$src]))
  22          $dest_array[$dest] = $src_array[$src];
  23    }
  24  
  25    function arrayMerge($a1, $a2)//we need at least two args and we specify them explicitly
  26    {
  27      $args = func_get_args();
  28      $res = $a1;
  29      for($i=1;$i<sizeof($args);$i++)
  30        $res = self :: _arrayMerge($res, $args[$i]);
  31      return $res;
  32    }
  33  
  34    function _arrayMerge($a1, $a2)
  35    {
  36      $n = $a1;
  37      foreach($a2 as $k => $v)
  38        if(is_array($v) &&  isset($n[$k]) &&  is_array($n[$k]))
  39          $n[$k] = self :: _arrayMerge($n[$k], $v);
  40        else
  41          $n[$k] = $v;
  42      return $n;
  43    }
  44  
  45    function explode($pairs_delim, $values_delim, $string)
  46    {
  47      $res = array();
  48      foreach(explode($pairs_delim, $string) as $pair)
  49      {
  50        list($key, $value) = explode($values_delim, $pair);
  51        $res[$key] = $value;
  52      }
  53      return $res;
  54    }
  55  
  56    function & arrayGet($arr_def, &$res_array, $default_value='')
  57    {
  58      if($size = sizeof($arr_def))
  59      {
  60        $key = array_shift($arr_def);
  61  
  62        if(is_array($res_array) &&  isset($res_array[$key]))
  63          if($size > 1)
  64            return lmbArrayHelper :: arrayGet($arr_def, $res_array[$key]);
  65          elseif($size == 1)
  66            return $res_array[$key];
  67      }
  68  
  69      return $default_value;
  70    }
  71  
  72    function arraySet($arr_def, &$res_array, $value)
  73    {
  74      if($size = sizeof($arr_def))
  75      {
  76        $key = array_shift($arr_def);
  77  
  78        if($size > 1)
  79        {
  80          if (!isset($res_array[$key]))
  81            $res_array[$key] = array();
  82  
  83          lmbArrayHelper :: arraySet($arr_def, $res_array[$key], $value);
  84        }
  85        elseif($size == 1)
  86          $res_array[$key] = $value;
  87      }
  88    }
  89  
  90    function getColumnValues($column_name, $array)
  91    {
  92      $result = array();
  93      foreach($array as $item)
  94        $result[] = $item[$column_name];
  95  
  96      return $result;
  97    }
  98  
  99    function getMaxColumnValue($column_name, $array, &$index)
 100    {
 101      $index = 0;
 102  
 103      if(!$values = lmbArrayHelper :: getColumnValues($column_name, $array))
 104        return false;
 105  
 106      $max = max($values);
 107      $index = array_search($max, $values);
 108      return $max;
 109    }
 110  
 111    function getMinColumnValue($column_name, $array, &$index)
 112    {
 113      $index = 0;
 114  
 115      if(!$values = lmbArrayHelper :: getColumnValues($column_name, $array))
 116        return false;
 117  
 118      $min = min($values);
 119      $index = array_search($min, $values);
 120      return $min;
 121    }
 122  
 123    function toFlatArray($array, &$result, $prefix='')
 124    {
 125      foreach($array as $key => $value)
 126      {
 127        $string_key = ($prefix) ? '[' . $key . ']' : $key;
 128  
 129        if(is_array($value))
 130          lmbArrayHelper :: toFlatArray($value, $result, $prefix . $string_key);
 131        else
 132          $result[$prefix . $string_key] = $value;
 133      }
 134    }
 135  
 136    function arrayMapRecursive($in_func, &$in_array)
 137    {
 138      foreach (array_keys($in_array) as $key)
 139      {
 140        $value =& $in_array[$key];
 141  
 142        if (is_array($value))
 143          lmbArrayHelper :: arrayMapRecursive($in_func, $value);
 144        else
 145          $value = call_user_func_array($in_func, array($value));
 146      }
 147      return $in_array;
 148    }
 149  
 150    //e.g, $sort_params = array('field1' => 'DESC', 'field2' => 'ASC')

 151    function & sortArray($array, $sort_params, $preserve_keys = true)
 152    {
 153      $array_mod = array();
 154      foreach ($array as $key => $value)
 155       $array_mod['_' . $key] = $value;
 156  
 157      $i = 0;
 158      $multi_sort_line = "return array_multisort( ";
 159      foreach ($sort_params as $name => $sort_type)
 160      {
 161       $i++;
 162       foreach ($array_mod as $row_key => $row)
 163       {
 164         if(is_object($row))
 165           $sort_values[$i][] = $row->get($name);
 166         else
 167           $sort_values[$i][] = $row[$name];
 168       }
 169  
 170       if($sort_type    == 'DESC')
 171        $sort_args[$i] = SORT_DESC;
 172       else
 173        $sort_args[$i] = SORT_ASC;
 174  
 175       $multi_sort_line .= '$sort_values[' . $i . '], $sort_args[' . $i . '], ';
 176      }
 177      $multi_sort_line .= '$array_mod );';
 178  
 179      eval($multi_sort_line);
 180  
 181      $array = array();
 182      foreach($array_mod as $key => $value)
 183      {
 184       if($preserve_keys)
 185        $array[substr($key, 1)] = $value;
 186       else
 187        $array[] = $value;
 188      }
 189  
 190      return $array;
 191    }
 192  }
 193  
 194  ?>


Generated: Tue Oct 14 04:47:40 2008 Cross-referenced by PHPXref 0.7