1: <?php
2:
3: /**
4: * Onion Framework - Práca s poľami
5: *
6: * Copyright (c) 2011 Jano Gašpar (http://webstranky.net)
7: *
8: * @author Jano Gašpar
9: * @copyright Copyright (c) 2011 Jano Gašpar
10: * @package Onion::Utils
11: **/
12: class Arrays
13: {
14: /**
15: * Výber hodnoty z poľa podľa kľúča, ak kľúč neexistuje, vráti NULL
16: *
17: * @param array pole z ktorého sa má hodnota vybrať
18: * @param string|array kľúč ktorého hodnota sa má vybrať, môže byť pole ak sa má vyberať z viacrozmerného poľa
19: * @return mixed hodnota kľúča
20: */
21: public static function get_value($array, $key)
22: {
23: if (is_array($key) === FALSE) {
24: if (isset($array[$key]) === FALSE) {
25: return NULL;
26: }
27:
28: return $array[$key];
29:
30: } else {
31: $value = $array;
32:
33: foreach ($key as $k) {
34: if (isset($value[$k]) === FALSE) {
35: return NULL;
36: }
37:
38: $value = $value[$k];
39: }
40: }
41:
42: return $value;
43: }
44:
45:
46: /**
47: * Zistenie či sa hodnota nachádza v poli, na rozdiel od štandardnej PHP funnkcie ignoruje rozdiely vo veľkosti písmen
48: *
49: * @param string|int hľadaná hodnota
50: * @param array pole v ktorom sa hľadá
51: * @return bool
52: */
53: public static function in_array($needle, $haystack)
54: {
55: foreach ($haystack as &$value) {
56: $value = strtolower($value);
57: }
58:
59: return in_array(strtolower($needle), $haystack);
60: }
61:
62:
63: /**
64: * Rekurzívne spojenie dvoch polí, existujúce hodnoty z prvého poľa sa prepíšu hodnotami z druhého
65: *
66: * @param array prvé pole
67: * @param array druhé pole
68: * @return array výsledné pole
69: */
70: public static function merge($array_a, $array_b)
71: {
72: foreach ($array_b as $key => $value) {
73: if (is_array($value) === TRUE
74: AND isset($array_a[$key]) === TRUE) {
75:
76: $array_a[$key] = self::merge($array_a[$key], $value);
77:
78: } else {
79: $array_a[$key] = $value;
80: }
81: }
82:
83: return $array_a;
84: }
85:
86:
87: /**
88: * Kontrola či všetky prvky poľa sú číslo
89: *
90: * @param array pole na kontrolu
91: * @return bool
92: */
93: public static function is_numeric($array)
94: {
95: foreach ($array as $value) {
96: if (is_numeric($value) === FALSE) {
97: return FALSE;
98: }
99: }
100:
101: return TRUE;
102: }
103:
104:
105: public static function flatten($array)
106: {
107: $out = array();
108: foreach ($array as $key => $value) {
109: if (is_array($value) === TRUE) {
110: $out = array_merge($out, self::flatten($value));
111:
112: } else {
113: $out[$key] = $value;
114: }
115: }
116:
117: return $out;
118: }
119: }
120: