MergeDeepTest.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <?php
  2. namespace Tests;
  3. use think\helper\Arr;
  4. class MergeDeepTest extends TestCase
  5. {
  6. public function testMergeDeepWithAssociativeArrays()
  7. {
  8. // 测试关联数组的递归合并
  9. $array1 = ['a' => ['b' => 2], 'c' => 3];
  10. $array2 = ['a' => ['b' => 4, 'd' => 5], 'e' => 6];
  11. $result = Arr::mergeDeep($array1, $array2);
  12. $expected = [
  13. 'a' => ['b' => 4, 'd' => 5],
  14. 'c' => 3,
  15. 'e' => 6
  16. ];
  17. $this->assertEquals($expected, $result);
  18. }
  19. public function testMergeDeepWithIndexedArrays()
  20. {
  21. // 测试索引数组的覆盖
  22. $array1 = ['a' => [1, 2, 3], 'b' => 2];
  23. $array2 = ['a' => [4, 5], 'c' => 3];
  24. $result = Arr::mergeDeep($array1, $array2);
  25. $expected = [
  26. 'a' => [4, 5], // 索引数组应该被完全覆盖
  27. 'b' => 2,
  28. 'c' => 3
  29. ];
  30. $this->assertEquals($expected, $result);
  31. }
  32. public function testMergeDeepWithMixedArrays()
  33. {
  34. // 测试混合数组类型
  35. $array1 = [
  36. 'a' => ['b' => 2, 'c' => 3],
  37. 'd' => [1, 2, 3],
  38. 'e' => 4
  39. ];
  40. $array2 = [
  41. 'a' => ['b' => 5, 'f' => 6],
  42. 'd' => [7, 8],
  43. 'g' => 9
  44. ];
  45. $result = Arr::mergeDeep($array1, $array2);
  46. $expected = [
  47. 'a' => ['b' => 5, 'c' => 3, 'f' => 6], // 关联数组递归合并
  48. 'd' => [7, 8], // 索引数组被覆盖
  49. 'e' => 4,
  50. 'g' => 9
  51. ];
  52. $this->assertEquals($expected, $result);
  53. }
  54. }