假设我有一个如下所示的枚举:
enum Shippint: string
{
case Express = 'express';
case Standard = 'standard';
case Economy = 'cheap';
/** @return string[] */
public static function values(): array
{
return array_column(self::cases(), 'value');
}
}
我有两个数组要进行比较,并执行类似于array_diff
的操作
$arr1 = [
Delivery::tryFrom('express')
Delivery::tryFrom('cheap')
];
$arra2 = [
Delivery::tryFrom('express')
Delivery::tryFrom('standard')
]
我可以遍历每个枚举数组并将其转换为字符串数组
$arrOfStrings1 = [];
$arrayOfStrings2 = [];
foreach($arr1 as $value) {
$arrOfStrings1[] = $value->value;
}
foreach($arr2 as $value) {
$arrayOfStrings2[] = $value->value;
}
if (array_diff($arrOfStrings1, $arrayOfStrings2)) {
echo 'arrays different';
} else {
echo 'same'
}
我可以将其隐藏在枚举方法中,但是,也许有一些内置的PHP方法可以做到这一点?不幸的是,不可能将__toSting()
添加到枚举中,否则可以添加array_diff
,因为它会自动将对象转换为字符串.谢谢