2013-08-05 148 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