aa / array-diff
计算数组差异的组件
dev-master
2019-01-24 17:58 UTC
Requires
- php: >7.0
- symfony/yaml: 4.*
Requires (Dev)
- phpunit/phpunit: 6.*
This package is not auto-updated.
Last update: 2024-09-14 18:42:15 UTC
README
ArrayDiff 计算器的工作原理类似于 PHP 函数 array_diff_assoc
,但由于使用表达式(值匹配),因此以更好的方式计算数组差异。
- 使用表达式(值匹配),
- 提供有关数组差异的扩展信息。
示例
$array1 = ['a' => 8, 'b' => 2, 'c' => 3]; $array2 = ['a' => 6, 'b' => 2, 'd' => 3]; $calc = new Calculator(new SimpleMatcher()); $diff = $calc->calculateDiff($array1, $array2); print $diff->toString();
输出
missing: - key_path: c expected: 3 unmatched: - key_path: a expected: 8 actual: 6
因为
- 键为 'c' 的项在 array2 中缺失(缺失)
- 键为 'a' 的项具有不同的值(不匹配)
高级示例
假设我们有两个数组
您可以使用表达式匹配来计算这些数组的差异
$calc = new Calculator(new ExpressionMatcher()); $diff = $calc->calculateDiff($array1, $array2); print $diff->toString();
它返回
missing: { } unmatched: - key_path: pages expected: '<type.datetime>' actual: 567
因为
- array1 的键与 array2 的键匹配,因此没有缺失的项
- 字符串 'The Lord of the Rings' 与表达式
<type.string>
匹配 - '25.99 EUR' 与复合表达式
<type.float(2)> <type.string>
匹配 - 'true' 与表达式
<type.boolean>
匹配 - isbn 值 '1230260002385' 与表达式
<type.string>
匹配 - 页数 '567' 不匹配表达式
<type.datetime>
表达式的语法为 <expression-name(param1, param2,...)>
。