/helpers/ArrayHelper.php

https://github.com/hanfer2/Talentos · PHP · 162 lines · 111 code · 19 blank · 32 comment · 20 complexity · ce13041f6f2c2c72846fde5995bf45dc MD5 · raw file

  1. <?php
  2. if (!function_exists('array_combine')) {
  3. function array_combine($arr1, $arr2) {
  4. $out = array();
  5. foreach ($arr1 as $key1 => $value1) {
  6. $out[$value1] = $arr2[$key1];
  7. }
  8. return $out;
  9. }
  10. }
  11. function range_assoc($low, $high, $step=1) {
  12. $array = array();
  13. $counter = $low;
  14. while ($counter <= $high) {
  15. $array[$counter] = $counter;
  16. $counter += $step;
  17. }
  18. return $array;
  19. }
  20. /**
  21. * determina si un arreglo es asociativo o no
  22. * @param array $array arreglo a analizar
  23. * @return bool TRUE si el arreglo es asociativo, de lo contrario, FALSE
  24. */
  25. function is_assoc($array) {
  26. return (is_array($array) && (0 !== count(array_diff_key($array, array_keys(array_keys($array)))) || count($array) == 0));
  27. }
  28. function arrayize($o) {
  29. if (is_array($o))
  30. return $o;
  31. return array($o);
  32. }
  33. function transpose($array) {
  34. $arr = array();
  35. for ($i = 0; $i < count($array); $i++)
  36. for ($j = 0; $j < count($array[$i]); $j++)
  37. $arr[$i][$j] = $array[$j][$i];
  38. return $arr;
  39. }
  40. function extract_assoc_array($array) {
  41. $assoc = array();
  42. foreach ($array as $k => $v)
  43. if (is_string($k))
  44. $assoc[$k] = $v;
  45. return $assoc;
  46. }
  47. /**
  48. *
  49. * @param array $array
  50. * @param <type> $item
  51. * @param <type> $default
  52. * @return <type>
  53. */
  54. function array_item($array, $item, $default = null) {
  55. if (!is_array($array)) {
  56. //trigger_error("array_item: $array is not array", E_USER_WARNING);
  57. }
  58. return any($array[$item], $default);
  59. }
  60. /**
  61. * concatena los argumentos con $glue
  62. * @param string $glue separador de los argumentos
  63. * @param string
  64. * @return string
  65. */
  66. function joins($glue, $pieces) {
  67. $glue = str_replace("\n", '<br/>', $glue);
  68. $arrays = array_slice(func_get_args(), 1);
  69. $arrays = array_filter($arrays);
  70. return implode($glue, $arrays);
  71. }
  72. function array_take($key, &$array) {
  73. $element = null;
  74. if (array_key_exists($key, $array)) {
  75. $element = $array[$key];
  76. unset($array[$key]);
  77. }
  78. return $element;
  79. }
  80. /**
  81. * Extrae un subarreglo de un arreglo basandose en las llaves.
  82. * @params array $array arreglo original
  83. * @params string $keys
  84. * Si la cantidad de argumentos es superior a dos, indicaran el nombre de las claves a extraer,.
  85. * de lo contrario, indicara el nombre de las claves a extraer separadas por comas.
  86. */
  87. function subarray($array, $keys){
  88. $subarray = array();
  89. if(func_num_args() > 2)
  90. $keys = array_slice(func_get_args(), 1);
  91. elseif(!is_array($keys))
  92. $keys = explode(',', $keys);
  93. foreach($array as $k=>$v)
  94. if(in_array($k,$keys))
  95. $subarray[$k] = $v;
  96. return $subarray;
  97. }
  98. if(!function_exists('array_fill_keys')){
  99. function array_fill_keys($keys, $value){
  100. return array_combine($keys,array_fill(0,count($keys),$value));
  101. }
  102. }
  103. if (!function_exists('array_diff_key')) {
  104. function array_diff_key() {
  105. $arrs = func_get_args();
  106. $result = array_shift($arrs);
  107. foreach ($arrs as $array) {
  108. foreach ($result as $key => $v) {
  109. if (array_key_exists($key, $array)) {
  110. unset($result[$key]);
  111. }
  112. }
  113. }
  114. return $result;
  115. }
  116. function multisize_param_assoc_array($params){
  117. if(!is_array($params))
  118. return null;
  119. $multi = array();
  120. foreach($params as $k=>$param){
  121. $multi[] = array('codigo'=>$k, 'nombre'=>$param);
  122. }
  123. return $multi;
  124. }
  125. /**
  126. * Permite remover uno o varios items de un arreglo.
  127. *
  128. * @param $array array arreglo que contiene los items
  129. * @param $item mixed item a eliminar.
  130. */
  131. function array_remove_item($array){
  132. $args = func_get_args();
  133. $items = array_shift($args);
  134. if (empty($array) || !is_array($array))
  135. return false;
  136. foreach($array as $key => $value) {
  137. if (in_array($value, $items))
  138. unset($array[$key]);
  139. }
  140. return $array;
  141. }
  142. }
  143. ?>