Completed
Push — master ( 6427e5...77fbe2 )
by Jean-Christophe
01:41
created

UArray::removeByKey()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 6
rs 9.4285
cc 2
eloc 4
nc 2
nop 2
1
<?php
2
3
namespace Ubiquity\utils\base;
4
5
/**
6
 * Array utilities
7
 * @author jc
8
 *
9
 */
10
class UArray {
11
12
	/**
13
	 * Tests if array is associative
14
	 * @param array $array
15
	 * @return boolean
16
	 */
17
	public static function isAssociative($array) {
18
		return (array_keys($array) !== range(0, count($array) - 1));
19
	}
20
	
21
	/**
22
	 * Returns a new array with the keys $keys
23
	 * @param array $array an associative array
24
	 * @param array $keys some keys
25
	 * @return array
26
	 */
27
	public static function extractKeys($array,$keys){
28
		$result=[];
29
		foreach ($keys as $key){
30
			if(isset($array[$key])){
31
				$result[$key]=$array[$key];
32
			}
33
		}
34
		return $result;
35
	}
36
37
	public static function getValue($array, $key, $pos) {
38
		if (array_key_exists($key, $array)) {
39
			return $array[$key];
40
		}
41
		$values=array_values($array);
42
		if ($pos < sizeof($values))
43
			return $values[$pos];
44
	}
45
46
	public static function getDefaultValue($array, $key, $default) {
47
		if (array_key_exists($key, $array)) {
48
			return $array[$key];
49
		} else
50
			return $default;
51
	}
52
53
	public static function asPhpArray($array, $prefix="") {
54
		$exts=array ();
55
		$extsStr="";
56
		if (self::isAssociative($array)) {
57
			foreach ( $array as $k => $v ) {
58
				$exts[]="\"" . $k . "\"=>" . self::parseValue($v, 'array');
59
			}
60
		} else {
61
			foreach ( $array as $v ) {
62
				$exts[]=self::parseValue($v, 'array');
63
			}
64
		}
65
		if (\sizeof($exts) > 0 || $prefix !== "") {
66
			$extsStr="(" . \implode(",", $exts) . ")";
67
		}
68
		return $prefix . $extsStr;
69
	}
70
71
	public static function remove($array, $search) {
72
		if (\is_array($search)) {
73
			foreach ( $search as $val ) {
74
				$array=self::removeOne($array, $val);
75
			}
76
		} else {
77
			$array=self::removeOne($array, $search);
78
		}
79
		return array_values($array);
80
	}
81
	
82
	/**
83
	 * Removes from array by key
84
	 * @param array $array
85
	 * @param int|string $key
86
	 * @return array
87
	 */
88
	public static function removeByKey($array,$key){
89
		if(isset($array[$key])){
90
			unset($array[$key]);
91
		}
92
		return $array;
93
	}
94
95
	public static function removeOne($array, $search) {
96
		if (($key=array_search($search, $array)) !== false) {
97
			unset($array[$key]);
98
		}
99
		return $array;
100
	}
101
102
	public static function update(&$array, $search, $newValue) {
103
		if (($key=array_search($search, $array)) !== false) {
104
			$array[$key]=$newValue;
105
		}
106
		return $array;
107
	}
108
109
	private static function parseValue($v, $prefix="") {
110
		if (\is_bool($v) === true) {
111
			$result=UString::getBooleanStr($v);
112
		} elseif (\is_numeric($v)) {
113
			$result=$v;
114
		} elseif (\is_array($v)) {
115
			$result=self::asPhpArray($v, $prefix);
116
		} else {
117
			$result="\"" . \str_replace('$', '\$', $v) . "\"";
118
		}
119
		return $result;
120
	}
121
}
122