如何在foreach()中使用多个数组?

时间:2016-02-20 16:16:57

标签: php arrays foreach

我想在foreach()中发送多个数组。 我知道这种方式是错误的。这是真正的方法吗?

$Fname = [1,2,3,4,5];
$Lname = [1,2,3,4,5];
$Addrs = [1,2,3,4,5];
$Mobile = [1,2,3,4,5];

$fields = array(
    'name'  => 'a',
    'type'  => 'b',
    'value' => 'n',
    'show'  => 'd',
);



foreach($fields as $key => $n) 
{
    echo " {$Fname[$key]} , {$Lname[$key]},{$Addrs[$key]} , {$Mobile[$key]},{$key} ,{$n} <br>";
}

4 个答案:

答案 0 :(得分:1)

i know this way is false ...?它的错误是什么?

foreach()将遍历 数组,而不是遍历多个数组....如果您绝对需要在同一foreach()循环中迭代多个数组,则可以使用SPL MultipleIterator,但它为您的代码增加了更多的复杂性,并且您采用的方法与任何

一样好

确保您的密钥在所有阵列中匹配;如果他们不这样做你就会遇到问题

foreach(array_values($fields) as $key => $n) 
{
    $k = array_keys($fields)[$key];
    echo " {$Fname[$key]} , {$Lname[$key]},{$Addrs[$key]} , {$Mobile[$key]},{$k} ,{$n} <br>";
}

答案 1 :(得分:1)

如果所有数组的行数相同,则可以使用for循环代替foreach,结合next()current()使用关联数组:

for( $i = 0; $i < count($Fname); $i++ )
{
    echo $Fname[$i]  . PHP_EOL;
    echo $Lname[$i]  . PHP_EOL;
    echo $Addrs[$i]  . PHP_EOL;
    echo $Mobile[$i] . PHP_EOL;
    echo current($fields) . PHP_EOL;
    next($fields);
}

问题是您的阵列没有相同的行号... 所以你必须添加一些这样的条件:

for( $i = 0; $i < count($Fname); $i++ )
{
    echo $Fname[$i]  . PHP_EOL;
    echo $Lname[$i]  . PHP_EOL;
    echo $Addrs[$i]  . PHP_EOL;
    echo $Mobile[$i] . PHP_EOL;
    if( isset(current($fields)) )
    {
        echo current($fields) . PHP_EOL;
        next($fields);
    }
}

答案 2 :(得分:0)

不是像这样存储你的数据,而是更容易将它存储在一个关联数组中:

$people = array(
    array(
        'firstName' => 'Bruce',
        'lastName' => 'Wayne',
        'address' => '123 East St. Gotham City, XX USA'
        'mobile' => '847-847-8475'
    ),
    array(
        'firstName' => 'Roland',
        'lastName' => 'Deschain',
        'address' => 'N/A'
        'mobile' => '191-919-1919'
    )
);

foreach($people as $person){
    echo $person['firstName'] + ', ' + $person['lastName'];
    echo $person['address'] + ', ' + $person['mobile'];
}

它只是一种更简洁的方式来存储/访问您的数据,也可以轻松使用一个foreach。

答案 3 :(得分:0)

试试这段代码

$ arr1 = array(“a”=&gt; 1,“b”=&gt; 2,“c”=&gt; 3);  $ arr2 = array(“x”=&gt; 4,“y”=&gt; 5,“z”=&gt; 6);

foreach($ arr1 as $ key =&gt;&amp; $ val){} foreach($ arr2 as $ key =&gt; $ val){}

的var_dump($ ARR1);  的var_dump($ ARR2);