我想在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>";
}
答案 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);