2011-08-24 113 views
1

我想收集每個membership_name值並顯示它。我嘗試了一些foreach循環,但他們總是提醒我的drupal安裝爲無效的foreach()命令。如何從多維數組中動態獲取信息

這是print_r($ myMemberships);

Array 
(
[1] => Array 
    (
     [3] => Array 
      (
       [id] => 3 
       [membership_id] => 3 
       [contact_id] => 1 
       [membership_contact_id] => 1 
       [membership_type_id] => 1 
       [join_date] => 2011-08-23 
       [start_date] => 2011-08-23 
       [membership_start_date] => 2011-08-23 
       [status_id] => 2 
       [is_override] => 1 
       [is_test] => 0 
       [member_is_test] => 0 
       [is_pay_later] => 0 
       [member_is_pay_later] => 0 
       [membership_name] => Orientation 
       [relationship_name] => Volunteer for 
      ) 

     [4] => Array 
      (
       [id] => 4 
       [membership_id] => 4 
       [contact_id] => 1 
       [membership_contact_id] => 1 
       [membership_type_id] => 2 
       [join_date] => 2011-08-23 
       [start_date] => 2011-08-23 
       [membership_start_date] => 2011-08-23 
       [status_id] => 2 
       [is_override] => 1 
       [is_test] => 0 
       [member_is_test] => 0 
       [is_pay_later] => 0 
       [member_is_pay_later] => 0 
       [membership_name] => Field Production 
       [relationship_name] => Volunteer for 
      ) 

     [5] => Array 
      (
       [id] => 5 
       [membership_id] => 5 
       [contact_id] => 1 
       [membership_contact_id] => 1 
       [membership_type_id] => 3 
       [join_date] => 2011-08-23 
       [start_date] => 2011-08-23 
       [membership_start_date] => 2011-08-23 
       [status_id] => 2 
       [is_override] => 1 
       [is_test] => 0 
       [member_is_test] => 0 
       [is_pay_later] => 0 
       [member_is_pay_later] => 0 
       [membership_name] => Graphic Design 
       [relationship_name] => Volunteer for 
      ) 

    ) 

[record_count] => 7 
) 

此外,我想固定每個membership_name作爲變量授予權限的用戶,如:

<?php 
     if ($orientation) { 

     // execute code 

} else { 

     // otherwise execute 

} 

<?php 
     if ($fieldproduction) { 

     // execute code 

} else { 

     // otherwise execute 

} 

// etc... etc... 

這是我使用後,它調用,可能完全錯誤的東西:

foreach ($myMemberships as $myMembership) { 
    foreach ($myMembership as $value => $final) { 
     echo 'hello'; 
    } 
} 
+0

如果你得到關於你的'的foreach()'的錯誤,那麼這將是在這裏發表他們有用,與你打電話'的foreach的方式()'一起。 –

+0

數組也被調用:print_r($ myMemberships); '的foreach($ myMemberships爲$ myMembership){ \t的foreach($ myMembership爲$值=> $最終){ \t \t \t回波 '你好'; } }'' – inertialmedia

+0

警告:()提供的foreach無效參數' – inertialmedia

回答

1

如果這是你的數組,那麼你需要尋找成員myMemberships[1],所以你的代碼應該是

foreach ($myMemberships[1] as $myMembership) { 
    foreach ($myMembership as $value => $final) { 
     // here you have membership properties 
    } 
} 

如果陣列是動態的,而不是你要檢查這一點,所以你應該做的像這樣

foreach ($myMemberships[1] as $myMembership) { 
    if (is_array($myMembership)) { 
     foreach ($myMembership as $value => $final) { 
      // here you have membership properties 
     } 
    } 
} 
+0

'的foreach($ myMemberships [1]爲$ myMembership){ \t如果(is_array($ myMembership)){ \t \t的foreach($ myMembership爲$值){ \t \t回波$值[ 'membership_name']; \t \t} \t} \t}' 給我:33111222210000OV44112222210000FV55113222210000GV66114222210000SV77115222210000VV88116222210000WV – inertialmedia

+0

@inertialmedia嘗試在內環到的print_r $值。 foreach警告是否解決? – Fabio

2

這就是record_count項目在數組底部導致問題。您的外部循環將爲內部循環分配7$myMemberShip。然後你試着對這個7做一個foreach - 因爲它不是一個數組,所以你會得到警告。

+0

是有辦法清理$ myMemberships數組以在傳遞循環之前不包含該項目? – inertialmedia

+0

是的,'del($ myMemberships ['record_count'])''。 –