gpt4 book ai didi

php - 映射数组并且不允许 future 的开发人员搞砸的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 06:36:40 24 4
gpt4 key购买 nike

假设我有一个数组 array('VI', 'MC', 'AE')和一个数组 array('V', 'M', 'E')我想映射数组,以便以后如果我获得 VI 的数据,我可以使用它来获得 V。我使用了 array_map 函数来做到这一点。但是,如果稍后有人进入并更改我的第一个数组的顺序或向其中添加一个但不更改第二个,则可能会弄乱映射。处理此问题以确保将来不会出现任何错误的最佳方法是什么。

这是我的代码示例。需要注意的一件事,我对数组进行了硬编码,但这些数组实际上是从从配置值中获取的方法中获取的,所以是的,它与仅在方法中定义两个数组不同

 private function _getMethodFromMageType($mageType){
$origCCTypes = array('VI', 'MC', 'AE');
$newCCTypes = array('V', 'M', 'E');
$typesMap = array_map(array(&$this, 'mapCCTypes'), $origCCTypes, $newCCTypes);

foreach ($typesMap as $key => $map){
if($map[$origType]){
return $map[$origType];
}
}
}

这是我对 array_map 函数的回调函数
private function mapCCTypes($ccTypes1, $ccTypes2){
return (array($ccTypes1 => $ccTypes2));
}

最佳答案

嗯,这有点难看,但如果你担心它,你可以通过硬编码当前已知的映射并优先使用那些优先于基于顺序的映射来使代码更能抵抗修改配置列表的顺序可用时:

private $ccStaticMap = array(
'VI' => 'V',
'MC' => 'M',
'AE' => 'E',
);

private function _getMethodFromMageType($origType) {
$origCCTypes = pullOrigTypesFromConfig();
$newCCTypes = pullNewTypesFromConfig();
foreach($this->ccStaticMap as $key => $val) {
while(($ix = array_search($key, $origCCTypes)) !== false)
unset($origCCTypes[$ix]);
while(($ix = array_search($val, $newCCTypes)) !== false)
unset($newCCTypes[$ix]);
}
$typesMap = $this->ccStaticMap;
for($ix = 0; $ix < min(count($origCCTypes), count($newCCTypes)); $ix++)
$typesMap[$origCCTypes[$ix]] = $newCCTypes[$ix];
return isset($typesMap[$origType]) ? $typesMap[$origType] : null;
}

关于php - 映射数组并且不允许 future 的开发人员搞砸的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4787402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com