循环遍历两个数组并显示每个数组的一个数据

时间:2015-07-17 10:22:51

标签: php arrays foreach

我想创建一个由两个不同数组的两个数据组成的字符串。我用两个foreach遍历两个数组以获取我的数据。但问题是我想同时循环foreach

所以例如(例如,这些数组不是真的),我有第一个数组:

array1 =('apple','orange','banana','lemon');

第二个阵列:

array2 =('果汁','水果','拆分','树');

我想循环遍历这些数组并创建一个类似的字符串:

“苹果汁”,“橙子水果”,“香蕉分裂”,“柠檬树”

凭借我的功能,我得到:

“苹果汁”,“橙汁”,“香蕉汁”,“柠檬汁”

我听说过递归函数,但我不知道该怎么做或者它是最好的方法。

所以这是我的代码:

foreach ($xml as $table)  
                {
                    foreach ($table as $champs)  /
                    {
                        foreach($array as $ligne)
                        {
                            foreach($ligne as $elt)
                            {
                                if ($table['nom']=='traitement') 
                                {
                                    $stringUpdate .= '\''.$champs->nom.'=\''.$elt.'\','; 
                                    break 2;
                                }
                            }
                        }update_traitement($stringUpdate);
                        $stringUpdate='';
                    }
                }
是的,有人能帮帮我吗?我真的不知道该怎么做。

编辑:

具体而言,我有一个数组,其中包含我从xml文件获取的数据以及另一个数组来自handontable。所以第二个数组是二维的,这就是我需要使用4 foreach的原因。

我需要循环遍历第二个数组的行和列,我认为简单的foreach将不匹配。

5 个答案:

答案 0 :(得分:1)

您只需要一个foreach

$array1 =('apple','orange','banana','lemon');
$array2 =('juice','fruit','split','tree');
foreach($array1 as $i=>$value){
 echo $value." ".$array2[$i];
}

答案 1 :(得分:0)

当两个数组具有相同的键和大小时,您可以像这样处理它

 <?php 
     foreach($array1 as $key=$val) {
       echo $val.' '.$array2[$key];
     }

答案 2 :(得分:0)

    $array1 = array('apple','orange','banana','lemon');

    $array2 = array('juice','fruit','split','tree');

    $output = array();
    if (! empty($array1)) {
        $i=0;
        foreach ($array1 as $elem) {
            $output[] = $elem . ' ' . $array2[$i];
            ++$i;
        }
    }

    echo '<pre>';
    print_r($output);
    echo '</pre>';

<强>解释

您正在循环遍历两个数组,但是,键是相同的。

所以,你可以在一个循环中完成它。

为循环设置一个计数器变量,并将其作为第二个数组的键。

答案 3 :(得分:0)

使用for循环让$ i在循环中每圈增加1。使用$ i访问相应数组中的值。

$array1 = array('apple', 'orange', 'banana', 'lemon');
$array2 = array('juice', 'fruit', 'split', 'tree');

for($i=0;$i < count($array1);$i++) {

$array3[] = $array1[$i] . " " . $array2[$i];

}

print_r($array3);

输出:数组([0] =&gt;苹果汁[1] =&gt;橙子水果[2] =&gt;香蕉分割[3] =&gt;柠檬树)

如果......

,这将有效
  • ...两个数组都有相同的键。
  • ...两个数组都有相同的大小。

<强>更新

好吧,即使数组没有相同的键和大小,这也行。

function merge($array1, $array2) {


    foreach($array1 as $item) {

        $newArray1[] = $item;

    }

    foreach($array2 as $item) {

        $newArray2[] = $item;

    }

    if(count($newArray1) < count($newArray2)) {

        $stop = count($newArray1);

    } else {

        $stop = count($newArray2);

    }


    for($i=0;$i < $stop;$i++) {

        $result[] = $newArray1[$i] . " " . $newArray2[$i];

    }

    return $result;

}

$array1 = array('apple', 'orange', 'banana', 'lemon');
$array2 = array('juice', 'fruit', 'split', 'tree');


print_r(merge($array1, $array2));

$array3 = array('apple', 'orange', 'banana');
$array4 = array('juice', 'fruit', 'split', 'tree');

print_r(merge($array3, $array4));

$array5 = array('foo' => 'apple', 'bar' => 'orange', 'test' => 'banana');
$array6 = array('juice', 'fruit');

print_r(merge($array5, $array6));

<强>输出:

Array([0] =&gt; apple juice [1] =&gt; orange fruit [2] =&gt; banana split [3] =&gt;柠檬树)

Array([0] =&gt; apple juice [1] =&gt; orange fruit [2] =&gt; banana split)

数组([0] =&gt;苹果汁[1] =&gt;橙子水果)

答案 4 :(得分:0)

那么阵列可能是二维的?这段代码适合你吗?

function merge($array1, $array2) {


    foreach($array1 as $item) {

        if(is_array($item)) {

            foreach($item as $item2) {

                $newArray1[] = $item2;

            }

        } else {

            $newArray1[] = $item;

        }

    }

    foreach($array2 as $item) {

        if(is_array($item)) {

            foreach($item as $item2) {

                $newArray2[] = $item2;

            }

        } else {

            $newArray2[] = $item;

        }

    }

    if(count($newArray1) < count($newArray2)) {

        $stop = count($newArray1);

    } else {

        $stop = count($newArray2);

    }

    for($i=0;$i < $stop;$i++) {

        $result[] = $newArray1[$i] . " " . $newArray2[$i];

    }

    return $result;

}

$array1 = array('apple', 'orange', 'banana', 'lemon');
$array2 = array('juice', 'fruit', 'split', 'tree');


echo "<pre>";
print_r(merge($array1, $array2));

$array3 = array('apple', 'orange', 'banana');
$array4 = array('juice', 'fruit', 'split', 'tree');

print_r(merge($array3, $array4));

$array5 = array('foo' => array('apple', 'banana'), 'bar' => 'orange', 'test' => 'peach');
$array6 = array('juice', array('fruit', 'test'), 'hello');

print_r(merge($array5, $array6));
echo "</pre>";

输出

enter image description here