0

所以我根据一组信息创建了这个数组。第一点是关于自定义列。我们得到一个模型对象,它是一个数组。

所以我告诉方法,我有问题,我希望这些字段是这样的:

    $customReportObject = array(
        'date_created' => 'project_date',
        'project_number' => 'project_number',
        'name'  => 'project_name',
        'description' => 'project_description',
        'manager' => 'project_manager_name'
    );

数组设置为custom_column_name=>actual_model_column_name

有两个模型被传入:

array(
    'projects' => $activeProjects,
    'PM' => $projectManager
)

数组设置为model_name=>model,模型是数组的数组。

那么我们将以下内容传递给:

private function customCollumns($model, $fields){
    $result = array();

    foreach($model as $modelName=>$modelObject){
        foreach($modelObject as $model){
            foreach($fields as $fieldName=>$actualName){
                if(array_key_exists($actualName, $model)){
                    $result[$fieldName] = $model[$actualName];
                }
            }
        }
    }

    return $result;
 }

它返回一个数组,当var_dumped 看起来像这样时:

array(5) {
  ["date_created"]=>
  string(10) "1381903200"
  ["project_number"]=>
  string(5) "02785"
  ["name"]=>
  string(9) "gfhfghfgh"
  ["description"]=>
  string(9) "fghgfhfgh"
  ["manager"]=>
  string(11) "Kevin Allen"
}

现在这就是我想要的,但不是。一,有 266 个,应该有。接受!所有 266 都是完全相同的减去总是manager变化的。我很肯定我的循环以及它如何创建结果数组有问题。$activeProjectswhen var_dumped 由 266 个不同的数组组成,不同的意思是每个数组的所有内容都不同。

有人能告诉我为什么我会得到 266 个相同的东西减去经理,以及我将如何解决这个问题?

4

1 回答 1

0

您只是在重复填充$result数组的相同元素。您需要一个二维数组,因此您需要为每个模型创建一个子数组,并将其附加到主结果数组。

private function customCollumns($model, $fields){
    $result = array();

    foreach($model as $modelName=>$modelObject){
        foreach($modelObject as $i => $model){
            $new_array = isset($result[$i]) ? $result[$i] : array();
            foreach($fields as $fieldName=>$actualName){
                if(array_key_exists($actualName, $model)){
                    $new_array[$fieldName] = $model[$actualName];
                }
            }
            $result[$i] = $new_array;
        }
    }

    return $result;
 }
于 2013-10-18T15:11:16.230 回答