Repository navigation
Expand file tree
/
Copy patharray.go
More file actions
95 lines (71 loc) · 1.73 KB
/
Copy patharray.go
File metadata and controls
95 lines (71 loc) · 1.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package phpgo
import (
"encoding/json"
"fmt"
"reflect"
)
//对应 php的 array 数组
type Array []interface{} //1 列表格式
type ArrayMap map[string]interface{} //2 map格式,暂时只支持 map[string]interface{} ,因为map[interface{}]interface{}会导致JsonEncode困难
// in_array() 检查元素是否在 数组内
func (array Array) In (data interface{}) bool{
for _,v := range array{
typ := reflect.TypeOf(v)
va := reflect.ValueOf(v)
if reflect.TypeOf(v) == reflect.TypeOf(data) {
if fmt.Sprintf("%qv", v) == fmt.Sprintf("%qv", data) {
return true
}
}
//支持 混合数组,map形式的
if typ.Kind() == reflect.Map {
for _,key := range va.MapKeys(){
if fmt.Sprintf("%qv", va.MapIndex(key)) == fmt.Sprintf("%qv", data) {
return true
}
}
}
}
return false
}
// array_shift 弹出数组的第一个
func (array *Array) Shift () interface{}{
if len(*array) > 0{
e := (*array)[0]
*array = (*array)[1:]
return e
}
return nil
}
// array_pop 弹出数组的最后一个
func (array *Array) Pop () interface{}{
if len(*array) > 0{
last := len(*array) - 1
e := (*array)[last]
*array = (*array)[:last]
return e
}
return nil
}
// count
func (array Array) Count () int{
return len(array)
}
// array_push 将一个或多个单元压入数组的末尾
func (array *Array) Push(values ...interface{}) Array {
for _,v := range values{
*array = append(*array,v)
}
return *array
}
//json_encode array 变成json
func (array Array) JsonEncode() string {
jsonArray, _ := json.Marshal(array)
return string(jsonArray)
}
//json_decode json 转 array
func JsonDecode(jsons string) (array Array) {
err := json.Unmarshal([]byte(jsons), &array)
if err != nil {}
return array
}