2011-08-24 112 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'])''。 –