2016-10-21 2 views
-2

私が取り組んでいるコードで助けが必要です。コードは、XML文書を使用するシステムのメールマージタイプのようなもので、phpで変数のいくつかの単語をスワップアウトします。配列へのアクセスと各ループ用のPHPの使用

私は以下に示すデータの配列を構築しています。

$emaillist = array(
       array('fname'   => 'Brad', 
        'lname'   => 'B', 
        'recipient'  => '[email protected]'), 

       array('fname'   => 'Josh', 
        'lname'   => 'M', 
        'recipient'  => '[email protected]'), 

       array('fname'   => 'Patrick', 
        'lname'   => 'P', 
        'recipient'  => '[email protected]'), 

       array('fname'   => 'Dave', 
        'lname'   => 'J', 
        'recipient'  => '[email protected]')); 

私はその後、私はデータセット内のそれぞれの人のためのコード実行のビットをたくさんしたいforeachループを作成し、私がやろうとしています一つのことは、スワップはstr_replaceを(使用して、いくつかの文字列を置換しています)。 foreach内の各人のファーストネームの値にアクセスするには、どうすればよいでしょうか。

私はループ外でそれをアクセスするには$ data [0] ['fname']のようになりますが、これはforeachでは実行できないと思います。

ご協力いただきありがとうございます。

+2

foreach($ emaillist as $ key => $ value){ echo $ value ['fname'];を探しています。 } '??結果は 'BradJoshPatrickDave'ですか? – devpro

+1

これは@devproを動作させますが、 '$ key'をキャストする必要はありません。この例では' foreach($ emaillist as $ recipient) 'のように '$ value'をもっと明示的に指定できます。 –

+0

データも可能ですが、 'foreach'ループの代わりに' for'ループを使用することが可能です – RST

答えて

0
:あなたは配列内の項目のいずれかを修正したい場合は、あなたが &$emaillist
<?php 
$emaillist = array(
       array('fname'   => 'Brad', 
        'lname'   => 'B', 
        'recipient'  => '[email protected]'), 

       array('fname'   => 'Josh', 
        'lname'   => 'M', 
        'recipient'  => '[email protected]'), 

       array('fname'   => 'Patrick', 
        'lname'   => 'P', 
        'recipient'  => '[email protected]'), 

       array('fname'   => 'Dave', 
        'lname'   => 'J', 
        'recipient'  => '[email protected]')); 

foreach ($emaillist as &$person) { 
    // silly example, amends any a charackter to xxx 
    $person['fname'] = str_replace('a', 'xxx', $person['fname']); 
} 

print_r($emaillist); 

このような結果、すなわち参照としてforeachループに配列を渡すために覚えておく必要があり、処理されています

これをチェックして、$emaillist配列を使って新しい配列を作成しました。その配列を生成している間に、前述のようにstr_repleceの機能を実行できます。

+0

回答を修正したい場合は、それを編集してから削除を取り消してください。あなたは新しい回答を作成する必要はありません – RiggsFolly

+1

@RiggsFollyあなたの助言をありがとう、私はそれに従います。 – user3099298

関連する問題