@@ -18,8 +18,8 @@ public function testArrayFlatten() {
18
18
array_flatten (array (
19
19
'bbq ' => array (
20
20
'soda ' => array ( 1 , 2 , 4 , 'fish fry ' ),
21
- 3
22
- )
21
+ 3 ,
22
+ ),
23
23
))
24
24
);
25
25
@@ -28,27 +28,185 @@ public function testArrayFlatten() {
28
28
array_flatten (array (
29
29
'bbq ' => array (
30
30
'soda ' => array ( 1 , 2 , 4 , 'fish fry ' ),
31
- 3
32
- )
31
+ 3 ,
32
+ ),
33
33
), true )
34
34
);
35
-
36
35
}
37
36
38
37
public function testArrayBlend () {
39
- //@todo: I'm not entirely sure how to test this
38
+ // Test blending arrays without specifying keys
39
+ $ arrays = array (
40
+ 'fruits ' => array ( 'apple ' , 'banana ' , 'cherry ' ),
41
+ 'vegetables ' => array ( 'carrot ' , 'broccoli ' , 'spinach ' ),
42
+ 'meats ' => array ( 'chicken ' , 'beef ' , 'pork ' ),
43
+ );
44
+
45
+ $ expected = array ( 'apple ' , 'banana ' , 'cherry ' , 'carrot ' , 'broccoli ' , 'spinach ' , 'chicken ' , 'beef ' , 'pork ' );
46
+ $ this ->assertEquals ($ expected , array_blend ($ arrays ));
47
+
48
+ // Test blending arrays with specific keys
49
+ $ keys = array ( 'fruits ' , 'meats ' );
50
+ $ expected = array ( 'apple ' , 'banana ' , 'cherry ' , 'chicken ' , 'beef ' , 'pork ' );
51
+ $ this ->assertEquals ($ expected , array_blend ($ arrays , $ keys ));
52
+
53
+ // Test with empty arrays
54
+ $ arrays = array (
55
+ 'fruits ' => array (),
56
+ 'vegetables ' => array ( 'carrot ' , 'broccoli ' ),
57
+ 'empty ' => array (),
58
+ );
59
+
60
+ $ expected = array ( 'carrot ' , 'broccoli ' );
61
+ $ this ->assertEquals ($ expected , array_blend ($ arrays ));
62
+
63
+ // Test with non-array values (should be skipped)
64
+ $ arrays = array (
65
+ 'fruits ' => array ( 'apple ' , 'banana ' ),
66
+ 'number ' => 42 ,
67
+ 'vegetables ' => array ( 'carrot ' ),
68
+ );
69
+
70
+ $ expected = array ( 'apple ' , 'banana ' , 'carrot ' );
71
+ $ this ->assertEquals ($ expected , array_blend ($ arrays ));
40
72
}
41
73
42
74
public function testArrayKeyArray () {
75
+ // Test with numeric keys
76
+ $ arrays = array (
77
+ array ( 'id ' => 1 , 'name ' => 'John ' , 'role ' => 'Developer ' ),
78
+ array ( 'id ' => 2 , 'name ' => 'Jane ' , 'role ' => 'Designer ' ),
79
+ array ( 'id ' => 3 , 'name ' => 'Bob ' , 'role ' => 'Manager ' ),
80
+ );
43
81
82
+ $ expected = array ( 1 , 2 , 3 );
83
+ $ this ->assertEquals ($ expected , array_key_array ($ arrays , 'id ' ));
84
+
85
+ // Test with string keys
86
+ $ expected = array ( 'John ' , 'Jane ' , 'Bob ' );
87
+ $ this ->assertEquals ($ expected , array_key_array ($ arrays , 'name ' ));
88
+
89
+ // Test with associative array keys
90
+ $ arrays = array (
91
+ 'user1 ' => array ( 'id ' => 101 , 'name ' => 'Alice ' ),
92
+ 'user2 ' => array ( 'id ' => 102 , 'name ' => 'Charlie ' ),
93
+ 'user3 ' => array ( 'id ' => 103 , 'name ' => 'Dave ' ),
94
+ );
95
+
96
+ $ expected = array ( 'user1 ' => 101 , 'user2 ' => 102 , 'user3 ' => 103 );
97
+ $ this ->assertEquals ($ expected , array_key_array ($ arrays , 'id ' ));
98
+
99
+ // Test with mixed content
100
+ $ arrays = array (
101
+ array ( 'id ' => 201 , 'data ' => 'value1 ' ),
102
+ array ( 'id ' => 202 , 'data ' => array ( 'nested ' => 'value2 ' ) ),
103
+ array ( 'id ' => 203 , 'data ' => 42 ),
104
+ );
105
+
106
+ $ expected = array ( 'value1 ' , array ( 'nested ' => 'value2 ' ), 42 );
107
+ $ this ->assertEquals ($ expected , array_key_array ($ arrays , 'data ' ));
44
108
}
45
109
46
110
public function testArrayKeysArray () {
111
+ // Test with multiple keys
112
+ $ arrays = array (
113
+ array ( 'id ' => 1 , 'name ' => 'John ' , 'role ' => 'Developer ' , 'age ' => 30 ),
114
+ array ( 'id ' => 2 , 'name ' => 'Jane ' , 'role ' => 'Designer ' , 'age ' => 28 ),
115
+ array ( 'id ' => 3 , 'name ' => 'Bob ' , 'role ' => 'Manager ' , 'age ' => 35 ),
116
+ );
117
+
118
+ $ keys = array ( 'id ' , 'name ' );
119
+ $ expected = array (
120
+ array ( 'id ' => 1 , 'name ' => 'John ' ),
121
+ array ( 'id ' => 2 , 'name ' => 'Jane ' ),
122
+ array ( 'id ' => 3 , 'name ' => 'Bob ' ),
123
+ );
124
+ $ this ->assertEquals ($ expected , array_keys_array ($ arrays , $ keys ));
47
125
126
+ // Test with a single key (passed as string)
127
+ $ expected = array (
128
+ array ( 'id ' => 1 ),
129
+ array ( 'id ' => 2 ),
130
+ array ( 'id ' => 3 ),
131
+ );
132
+ $ this ->assertEquals ($ expected , array_keys_array ($ arrays , 'id ' ));
133
+
134
+ // Test with a single key (passed as array)
135
+ $ this ->assertEquals ($ expected , array_keys_array ($ arrays , array ( 'id ' )));
136
+
137
+ // Test with associative array keys
138
+ $ arrays = array (
139
+ 'user1 ' => array ( 'id ' => 101 , 'name ' => 'Alice ' , 'dept ' => 'Engineering ' ),
140
+ 'user2 ' => array ( 'id ' => 102 , 'name ' => 'Charlie ' , 'dept ' => 'Marketing ' ),
141
+ 'user3 ' => array ( 'id ' => 103 , 'name ' => 'Dave ' , 'dept ' => 'Sales ' ),
142
+ );
143
+
144
+ $ keys = array ( 'id ' , 'dept ' );
145
+ $ expected = array (
146
+ 'user1 ' => array ( 'id ' => 101 , 'dept ' => 'Engineering ' ),
147
+ 'user2 ' => array ( 'id ' => 102 , 'dept ' => 'Marketing ' ),
148
+ 'user3 ' => array ( 'id ' => 103 , 'dept ' => 'Sales ' ),
149
+ );
150
+ $ this ->assertEquals ($ expected , array_keys_array ($ arrays , $ keys ));
48
151
}
49
152
50
153
public function testArrayKeyRefill () {
154
+ // Test with missing keys and default empty array fill
155
+ $ array = array (
156
+ 'key1 ' => 'value1 ' ,
157
+ 'key3 ' => 'value3 ' ,
158
+ );
159
+
160
+ $ keys = array ( 'key1 ' , 'key2 ' , 'key3 ' , 'key4 ' );
161
+ $ expected = array (
162
+ 'key1 ' => 'value1 ' ,
163
+ 'key2 ' => array (),
164
+ 'key3 ' => 'value3 ' ,
165
+ 'key4 ' => array (),
166
+ );
167
+
168
+ $ this ->assertEquals ($ expected , array_key_refill ($ array , $ keys ));
169
+
170
+ // Test with custom fill value (string)
171
+ $ expected = array (
172
+ 'key1 ' => 'value1 ' ,
173
+ 'key2 ' => 'default ' ,
174
+ 'key3 ' => 'value3 ' ,
175
+ 'key4 ' => 'default ' ,
176
+ );
177
+
178
+ $ this ->assertEquals ($ expected , array_key_refill ($ array , $ keys , 'default ' ));
179
+
180
+ // Test with custom fill value (number)
181
+ $ expected = array (
182
+ 'key1 ' => 'value1 ' ,
183
+ 'key2 ' => 0 ,
184
+ 'key3 ' => 'value3 ' ,
185
+ 'key4 ' => 0 ,
186
+ );
187
+
188
+ $ this ->assertEquals ($ expected , array_key_refill ($ array , $ keys , 0 ));
189
+
190
+ // Test with custom fill value (array)
191
+ $ fillArray = array ( 'status ' => 'empty ' );
192
+ $ expected = array (
193
+ 'key1 ' => 'value1 ' ,
194
+ 'key2 ' => $ fillArray ,
195
+ 'key3 ' => 'value3 ' ,
196
+ 'key4 ' => $ fillArray ,
197
+ );
198
+
199
+ $ this ->assertEquals ($ expected , array_key_refill ($ array , $ keys , $ fillArray ));
200
+
201
+ // Test with no missing keys
202
+ $ array = array (
203
+ 'a ' => 1 ,
204
+ 'b ' => 2 ,
205
+ 'c ' => 3 ,
206
+ );
51
207
208
+ $ keys = array ( 'a ' , 'b ' , 'c ' );
209
+ $ this ->assertEquals ($ array , array_key_refill ($ array , $ keys , 'unused ' ));
52
210
}
53
211
54
212
0 commit comments