2013-08-05 150 views
0

我想通过多维数组循环并将结果存储在变量中,以便我可以返回结果并保存它们。也就是说,我环视了超级信息高速公路......我找不到太多能帮助我解决问题的人。这是我到目前为止所尝试的。通过多维数组循环

public function findPolicyIds($coverageId = null) { 
    $policyid = $this->Policy->find('all', array(
     'recursive' => -1, 
     'conditions' => array('Policy.coverage_id' => $coverageId), 
     'fields' => array('Policy.id'))); 

     foreach($policyid as $id) { 

     } 
     return $id; 
} 

当我运行我的脚本时,我只得到一个结果。如果我在没有foreach语句的情况下运行脚本,并返回policyid,我会得到以下结果。

Array 
(
[0] => Array 
    (
     [Policy] => Array 
      (
       [id] => 520015be-2bc8-48ca-b5d1-63ebae78509d 
      ) 

    ) 

[1] => Array 
    (
     [Policy] => Array 
      (
       [id] => 520015be-48bc-496d-b8f8-63ebae78509d 
      ) 

    ) 

[2] => Array 
    (
     [Policy] => Array 
      (
       [id] => 520015be-5a08-47b6-9e97-63ebae78509d 
      ) 

    ) 

我只是想循环这些ID,所以我可以保存它们并将它们返回到另一种方法。

+1

你的循环复位'$ id'每个项目。通过返回'$ id',您将返回列表中的最后一个项目。 –

+0

你能解释为什么$ id被重置吗?另外我应该如何去返回数组中的所有ID。我正在考虑沿着debug,print_r或var_dump的方向。 – SkillSet

回答

0

foreach循环依次将policyid数组的每个元素分配给$id变量。它不会像重新分配那样被重置(到您正在迭代的数组的每个元素)。

为了回报只有id的数组,你需要收集它们,然后返回新的集合:

public function findPolicyIds($coverageId = null) { 

    .... 

    $all = array(); 
    foreach($policyid as $id) { 
     // here we are collecting only the ID value... 
     $all[] = $id['Policy']['id']; 
    } 

    return $all; 
} 
+0

谢谢!那正是我需要的! – SkillSet