2016-10-21 35 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','$ value'可以更明确,如'foreach($ emaillist as $ recipient)' –

+0

您想要使用的方式数据也可以,但用'for'循环代替'foreach'循环 – RST

回答

0

一个简单的foreach循环将做的伎俩。不过,如果你想修改任何数组中的项目要处理,你必须记住数组foreach循环传递作为参考,即&$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); 

结果:

Array 
(
    [0] => Array 
     (
      [fname] => Brxxxd 
      [lname] => B 
      [recipient] => [email protected] 
     ) 

    [1] => Array 
     (
      [fname] => Josh 
      [lname] => M 
      [recipient] => [email protected] 
     ) 

    [2] => Array 
     (
      [fname] => Pxxxtrick 
      [lname] => P 
      [recipient] => [email protected] 
     ) 

    [3] => Array 
     (
      [fname] => Dxxxve 
      [lname] => J 
      [recipient] => [email protected] 
     ) 

) 
0

检查这个,我使用$emaillist数组创建了新的数组。在生成该数组时,您可以执行我提到的str_replece函数。

$data = array(); 
foreach($emaillist as $key=>$row){ 
     $data[$key]['fname'] = $row['fname']; // add str_replace(search, replace, $row['fname']) 
     $data[$key]['lname'] = $row['lname']; 
     $data[$key]['recipient'] = $row['recipient']; 

} 
+0

如果你想修改一个答案,你可以删除它,然后编辑它,然后取消删除它。你不需要创建一个新的答案 – RiggsFolly

+1

@RiggsFolly谢谢你的建议,我会遵循。 – user3099298