我有两个嵌套的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
感谢您的帮助。
答案 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基本上是一个无操作。