17
17
use Toolkit \Sys \Sys ;
18
18
use function array_merge ;
19
19
use function array_shift ;
20
+ use function count ;
20
21
use function explode ;
21
22
use function implode ;
22
23
use function is_array ;
23
24
use function is_bool ;
24
25
use function is_int ;
25
26
use function is_numeric ;
26
27
use function is_scalar ;
27
- use function rtrim ;
28
28
use function str_repeat ;
29
29
use function strpos ;
30
30
use function trim ;
@@ -204,20 +204,9 @@ public static function spliceKeyValue(array $data, array $opts = []): string
204
204
205
205
$ lines = [];
206
206
207
- // if value is array, translate array to string
207
+ // if value is array, convert array to string
208
208
if (is_array ($ value )) {
209
- $ temp = '[ ' ;
210
- foreach ($ value as $ k => $ val ) {
211
- if (is_bool ($ val )) {
212
- $ val = $ val ? '(True) ' : '(False) ' ;
213
- } else {
214
- $ val = is_scalar ($ val ) ? (string )$ val : JsonHelper::unescaped ($ val );
215
- }
216
-
217
- $ temp .= (!is_numeric ($ k ) ? "$ k: " : '' ) . "$ val, " ;
218
- }
219
-
220
- $ value = rtrim ($ temp , ' , ' ) . '] ' ;
209
+ $ value = self ::arr2str ($ value );
221
210
// } elseif (is_object($value)) {
222
211
// $value = get_class($value);
223
212
} elseif (is_bool ($ value )) {
@@ -242,7 +231,7 @@ public static function spliceKeyValue(array $data, array $opts = []): string
242
231
243
232
// value has multi line
244
233
if ($ lines ) {
245
- $ linePrefix = $ opts ['leftChar ' ] . Str::repeat (' ' , $ keyWidth + 1 ) . $ opts ['sepChar ' ];
234
+ $ linePrefix = $ opts ['leftChar ' ] . Str::repeat (' ' , $ keyWidth ) . $ opts ['sepChar ' ];
246
235
foreach ($ lines as $ line ) {
247
236
$ fmtLines [] = $ linePrefix . $ line ;
248
237
}
@@ -255,4 +244,25 @@ public static function spliceKeyValue(array $data, array $opts = []): string
255
244
256
245
return implode ("\n" , $ fmtLines );
257
246
}
247
+
248
+ public static function arr2str (array $ arr ): string
249
+ {
250
+ if (count ($ arr ) === 0 ) {
251
+ return '[] ' ;
252
+ }
253
+
254
+ $ temp = "[ \n" ;
255
+ foreach ($ arr as $ k => $ val ) {
256
+ if (is_bool ($ val )) {
257
+ $ val = $ val ? '(True) ' : '(False) ' ;
258
+ } else {
259
+ $ val = is_scalar ($ val ) ? (string )$ val : JsonHelper::unescaped ($ val );
260
+ }
261
+
262
+ $ temp .= (!is_numeric ($ k ) ? " $ k: " : '' ) . "$ val, \n" ;
263
+ }
264
+
265
+ $ temp .= " ] " ;
266
+ return $ temp ;
267
+ }
258
268
}
0 commit comments