| [ Index ] |
PHP Cross Reference of Limb3 |
[Summary view] [Print] [Text view]
1 <?php 2 /* 3 * Limb PHP Framework 4 * 5 * @link http://limb-project.com 6 * @copyright Copyright © 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 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Tue Oct 14 04:47:40 2008 | Cross-referenced by PHPXref 0.7 |