2013-10-18 146 views
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_dump版看起来像这样的,一个数组:

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完全相同MINUS总是变化的manager。我肯定有我的循环有问题,以及它如何创建结果数组。 $activeProjectsvar_dump ed由266个DIFFERENT数组组成时,通过不同的意思是每个数组的所有内容都不同。

有人可以告诉我为什么我会减去同样的东西266减去经理,我会如何解决这个问题?

+1

您似乎反复为每个模型重复分配相同的'$ result [$ fieldName]''。 –

+0

你能详细解释一下吗? – LogicLooking

回答

0

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

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; 
} 
+0

虽然这可行,但缺少阵列中的'manager'。实际上你会一起跳过经理模型,因此永远不会添加它,因为它始终找不到“project_manager_name”的关键字。想法?有两个模型被传入以创建统一的自定义“数组” – LogicLooking

+0

我已经更改了答案,以便对于每个模型,它都会更新'$ result'中的相同元素,而不是创建新元素。我希望我能正确理解你的数据结构。 – Barmar

+0

因此,你阵列中的第一个数组给了我一个经理,耶 - 但他们都应该有一个经理,他们不。只是第一个 – LogicLooking