@@ -112,12 +112,12 @@ public static function toIterator(mixed $array): Traversable
112
112
/**
113
113
* array data to object
114
114
*
115
- * @param Traversable|array $array
116
- * @param string $class
115
+ * @param iterable $array
116
+ * @param string $class
117
117
*
118
118
* @return mixed
119
119
*/
120
- public static function toObject (Traversable | array $ array , string $ class = stdClass::class): mixed
120
+ public static function toObject (iterable $ array , string $ class = stdClass::class): mixed
121
121
{
122
122
$ object = new $ class ;
123
123
@@ -408,6 +408,24 @@ public static function collapse(array $array): array
408
408
return array_merge (...$ results );
409
409
}
410
410
411
+ /**
412
+ * like implode() but support any type
413
+ *
414
+ * @param array $list
415
+ * @param string $sep
416
+ *
417
+ * @return string
418
+ */
419
+ public static function join (array $ list , string $ sep = ', ' ): string
420
+ {
421
+ $ strings = [];
422
+ foreach ($ list as $ value ) {
423
+ $ strings [] = DataHelper::toString ($ value , true );
424
+ }
425
+
426
+ return implode ($ sep , $ strings );
427
+ }
428
+
411
429
/**
412
430
* Cross join the given arrays, returning all possible permutations.
413
431
*
@@ -648,6 +666,20 @@ public static function remove(array &$arr, int|string $key, mixed $default = nul
648
666
return $ value ;
649
667
}
650
668
669
+ /**
670
+ * @param array $arr
671
+ * @param ...$keys
672
+ *
673
+ * @return array
674
+ */
675
+ public static function deleteKeys (array $ arr , ...$ keys ): array
676
+ {
677
+ foreach ($ keys as $ key ) {
678
+ unset($ arr [$ key ]);
679
+ }
680
+ return $ arr ;
681
+ }
682
+
651
683
/**
652
684
* Get a value from the array, and remove it.
653
685
*
@@ -862,7 +894,7 @@ public static function toKVString(array $data, string $kvSep = '=', string $line
862
894
{
863
895
$ lines = [];
864
896
foreach ($ data as $ key => $ val ) {
865
- $ lines = $ key . $ kvSep . DataHelper::toString ($ val );
897
+ $ lines = $ key . $ kvSep . DataHelper::toString ($ val, true );
866
898
}
867
899
868
900
return implode ($ lineSep , $ lines );
0 commit comments