如何使用foreach从两个给定数组中获取值?

时间:2014-05-27 07:59:32

标签: php yii

我有两个像这样的数组

Array1 ( 
             [0] => 10:00:00-08 
             [1] => 10:02:00-08 
             [2] => 10:03:00-08 
             [3] => 10:04:00-08 
             [4] => 10:00:00-08 
             [5] => 10:00:00-08 
             [6] => 10:00:00-08 
            )

Array2 ( 
             [0] => 19:00:00-08 
             [1] => 19:02:00-08 
             [2] => 19:03:00-08 
             [3] => 19:04:00-08 
             [4] => 19:00:00-08 
             [5] => 19:00:00-08 
             [6] => 19:00:00-08 
       )

我想要以下输出。

$a=10:00:00-08 - 19:00:00-08;
$b=10:02:00-08 - 19:02:00-08;
$c= 10:03:00-08 -19:03:00-08;
and so on....  

4 个答案:

答案 0 :(得分:2)

您使用array_combine

// this will create an array using array1 as keys and array2 as values
$combined = array_combine($array1, $array2);
foreach($combined as $key=>$value)
{
   echo $key.' - '.$value;
   echo '<br />';
}

DEMO

答案 1 :(得分:1)

尝试以下(如果它们的大小相同):

<?php
  for($i = 0; $i < count($array1); $i++)
  {
    echo $array1[$i] . ' - ' . $array2[$i];
  }
?>

如果它们的大小不同,则应将其更改为

<?php
  $size = min(count($array1),count($array2));

  for($i = 0; $i < $size; $i++)
  {
    echo $array1[$i] . ' - ' . $array2[$i];
  }
?>

但只会回显第一个公共索引上的项目。

编辑:

如果要将结果分配给字母变量,请尝试此(Variable variables):

<?php
  $size = min(count($array1),count($array2));
  $var = 'a';


  for($i = 0; $i < $size; $i++)
  {
    $$var =  $array1[$i] . ' - ' . $array2[$i];
    $var++; // Next variable name will be b, c, d, ...
  }
?>

这会将前两个值分配给$a,依此类推。

DEMO

答案 2 :(得分:0)

<?php 

$array1 =   array('10:00:00-08','10:02:00-08' ,'10:03:00-08' , '10:04:00-08' , '10:00:00-08' , '10:00:00-08' , '10:00:00-08' ); 
$array2 =   array ( '19:00:00-08' , '19:02:00-08' , '19:03:00-08' , '19:04:00-08' , '19:00:00-08', '19:00:00-08' , '19:00:00-08' ); 

foreach( $array1  as $key=>$value) {


    echo $value .'-'.$array2[$key]."<br/>" ;


    }


?>

输出

  

10:00:00-08-19:00:00-08 10:02:00-08-19:02:00-08   10:03:00-08-19:03:00-08 10:04:00-08-19:04:00-08   10:00:00-08-19:00:00-08 10:00:00-08-19:00:00-08   10:00:00-08-19:00:00-08

答案 3 :(得分:0)

问题在于,假设您最多只有26个组合(a-z),所以我建议使用不同的方法并将输出放入数组中。另外,你不会知道例如是否设置了$ k。

如果你真的想把它们放到像$ a,$ b,$ c这样的变量中你可以做这样的事情,但就像我说的那样,你使用的方法并不理想:

$input_a = array("10:00:00-08");
$input_b = array("19:00:00-08");
$alphabet = range('a','z');
foreach ($input_a as $index=>$val) {
    ${$alphabet[$index]} = $val . "-" . $input_b[$index];
}