我试图减少代码:
我想在这部分中制作一个for循环,但它不会起作用。
$line1 = $frage1[0] . '|' . $frage1[1] . '|' . $frage1[2] . '|' . $frage1[3];
$line2 = $frage2[0] . '|' . $frage2[1] . '|' . $frage2[2] . '|' . $frage2[3];
$line3 = $frage3[0] . '|' . $frage3[1] . '|' . $frage3[2] . '|' . $frage3[3];
$line4 = $frage4[0] . '|' . $frage4[1] . '|' . $frage4[2] . '|' . $frage4[3];
$line5 = $frage5[0] . '|' . $frage5[1] . '|' . $frage5[2] . '|' . $frage5[3];
这是我的尝试:
for ($i=1; $i<6; $i++){
${line.$i} = ${frage.$i}[0] . '|' . ${frage.$i}[1] . '|' . ${frage.$i}[2] . '|' . ${frage.$i}[3];
}
编辑: 这是有效的解决方案(就这么简单:-p):
for ($i=1; $i<18; $i++){
${"line".$i} = implode("|", ${"frage".$i});
fwrite($antworten, ${"line".$i});
}
答案 0 :(得分:0)
for ($i=1; $i<6; $i++){
$line[$i] = $frage[0] . '|' . $frage[1] . '|' . $frage$i[2] . '|' . $frage$i[3];
}
这将插入您在第1行至第6行中发布的相同内容。这是您要找的内容吗?!
答案 1 :(得分:0)
for ($i=1; $i<6; $i++){
${"line$i"} = ${"frage$i"}[0] . '|' . ${"frage$i"}[1] . '|' . ${"frage$i"}[2] . '|' . ${"frage$i"}[3];
}
这也有效!
答案 2 :(得分:0)
您可能会发现variable variables上的文档很有用但看起来问题是PHP无法处理大括号内的未加引号的字符串。
因此,您需要${frage.$i}
而不是${"frage$i"}
。
但是,这可能不是解决此问题的最明确方法。它确实让我有点头疼,试图找出这段代码试图做的事情。相反,我建议先将所有$frage
添加到数组中,然后循环,如下所示:
$lines = array();
$frages = array($frage1, $frage2, $frage3, $frage4, $frage5)
foreach($frages as $frage) {
$lines[] = join('|', $frage);
}
请特别注意,您可以使用join
在每个$frage
之间连接|
,而不是手动执行此连接。如果你真的只希望连接数组的前4个元素,你总是可以使用[array_slice][2]
。
如果您有大量$frage
个变量,并且不想手动将它们添加到数组中,那么:
$frages = array();
for($i = 1; $i < x; $i++) {
$frages[] = ${"frage$i"}
}
如果您确实需要每个$line
变量而不是一系列行,那么您可以使用extract
,但这会为您提供$line_1
而不是$line1
等变量:
extract($lines, EXTR_PREFIX_ALL, "line")
但是,我建议您仔细查看为什么要生成这些编号$frage
,以及为什么需要这些编号为$line
作为输出。如果您的代码无法重新考虑使用数组,我会非常惊讶,这会使您的代码更简单,更不令人惊讶且更易于维护。