2011-08-24 11 views
1

それぞれのmembership_name値を集めて表示したいと思います。私はいくつかのforeachループを試しましたが、彼らは常に無効なforeach()コマンドとして私のdrupalインストールを警告します。多次元配列から動的に情報を取り出す方法

これは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); '($値として$ myMembership => $最終)foreachの($ myMembershipとして$ myMemberships){ \tのforeach { \t \t \tエコー 'こんにちは'。 } } ' – inertialmedia

+0

'警告:foreachのために供給無効な引数() ' – inertialmedia

答えて

1

それがあなたの配列である場合は、あなたの配列ではなく、あなたがそれをチェックする必要がありますので、あなたがすべき動的である場合は、あなたのコードが

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

する必要がありますので、あなたは、myMemberships[1]でメンバーを探す必要があり

+0

'foreachの($ myMemberships [1] $ myMembershipなど){ \t場合(IS_ARRAY($ myMembership)){ \t \t foreachの($値として$ myMembership){ \t \tエコー$値[ 'membership_name']。 \t \t} \t} \t} ' は私を与える:33111222210000OV44112222210000FV55113222210000GV66114222210000SV77115222210000VV88116222210000WV – inertialmedia

+0

あなたの内側のループで$値をしようとしますprint_r @inertialmedia。 foreachの警告は解決されていますか? – Fabio

2

問題の原因となっているアレイの下部にあるrecord_countアイテムです。外側のループは7$myMemberShipに割り当てます。その後、それは配列ではないので、あなたは警告を得る7のforeachをしようとします。

+0

への道があります$ myMemberships配列をループで渡す前に、その項目をインクルードしないようにしてください。 – inertialmedia

+0

はい、 'del($ myMemberships ['record_count'])'です。 –