php - 同时继续嵌套的foreach循环

时间:2017-03-22 09:35:42

标签: php foreach

我有两个嵌套的foreach循环:

$ren1 = array("class ConcreteClass1", "class hello");
$ren2 = array("class ConcreteClass2", "class bye");

    if(!empty($ren1) && !empty($ren2)){
        foreach($ren1 as $key1=>$value1){
            foreach($ren2 as $key2=>$value2){
                $result .= "Class renamed: ". $ren1[$key1]. " ==> ". $ren2[$key2]. "\n"; continue 2;
            } 
        }
    }

我使用休息并继续,但他们没有工作。

我应该怎样做才能得到这样的欲望输出:

class ConcreteClass1 ==> class ConcreteClass2
class hello ==> class bye

感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

无需使用嵌套循环:

$ren1 = array("class ConcreteClass1", "class hello");
$ren2 = array("class ConcreteClass2", "class bye");

if(!empty($ren1) && !empty($ren2)){
    foreach($ren1 as $key=>$value){
        echo "Class renamed: ". $ren1[$key]. " ==> ". $ren2[$key]. "\n";
    }
}

如果数组之间的索引始终与另一个相关,则只需在第二个数组上使用该索引。

答案 1 :(得分:1)

您可以按如下方式更改代码:

foreach( $ren1 as $index => $value ) {
$result .= "Class renamed: ". $value. " ==> ". $ren2[$index]. "\n";
}

答案 2 :(得分:0)

array1和array2有两个值。你写了两个嵌套的foreach。所以这些嵌套的foreach运行4次(2 x 2)。

答案 3 :(得分:0)

这里的问题是你没有以一种格式构建你的数据,这样你可以轻松地解析它。如果你使用单个关联数组而不是每个类多个数组,你会发现你的工作要容易得多。

$ren = [
    "ConcreteClass1" => "hello",
    "ConcreteClass2" => "bye",
];
$result = "";

foreach ($ren as $oldClass => $newClass) {
    $result .= "Class renamed: class {$oldClass} ==> class {$newClass}\n";
}

顺便说一句,如果你确定$ ren总是一个数组,你就不需要!empty check。空数组上的foreach基本上是一个无操作。