代码之家  ›  专栏  ›  技术社区  ›  Norgul

处理多个数组键以执行相同功能的PHP方法

  •  0
  • Norgul  · 技术社区  · 6 年前

    我有一个由两个数组组成的变量: old new . 由于我需要以同样的方式操作这两行代码,我发现我正在复制大部分代码行,只做了一些小改动。

    为了给您提供透视图,下面是一些代码部分:

    $old = json_decode($item['old']);
    $new = json_decode($item['new']);
    
    ...
    
    $diff['old'] = array_map($combineCallback, $bypassDiff ? $oldValues : array_diff($oldValues, $newValues));
    $diff['new'] = array_map($combineCallback, $bypassDiff ? $newValues : array_diff($newValues, $oldValues));
    
    ...
    
    if($keys == array('id')){
        $item['old'] = array_map($combineCallback, $old);
        $item['new'] = array_map($combineCallback, $new);
    }
    
    ...
    
    $items['old'] = $excludeCallback($items['old']);
    $items['new'] = $excludeCallback($items['new']);
    

    我很长时间都在研究这个问题,把它放在我认为可读的地方确实有点道理,但不知怎么的,它让我觉得我在做任何形式的复制。有没有一种方法可以避免重复使用,比如:

    public $keys = ['new', 'value'];
    
    public function call(&$item, $callback)
    {
        foreach ($this->keys as $key) {
            $callback($item[$key]);
        }
    }
    

    但是,我不确定这是否真的会增加代码的可读性,并做完全相反的事情?

    0 回复  |  直到 6 年前