为什么赢了';这不是PHP迭代吗?

为什么赢了';这不是PHP迭代吗?,php,iteration,concatenation,Php,Iteration,Concatenation,我想把foreach循环的结果变成一个字符串变量,我以后可以使用它(所以我不需要到处粘贴foreach循环)。我有这个: foreach($pairs as $d=>$m) { $orderedpairs .= "[".$d."],[".$m."]"+"<br />"; } echo $orderedpairs; foreach($d=>m){ $orderedpairs.=“[”$d.“],[“$m.”]“+””; } echo$orderedpairs; 如果我用“ec

我想把foreach循环的结果变成一个字符串变量,我以后可以使用它(所以我不需要到处粘贴foreach循环)。我有这个:

foreach($pairs as $d=>$m) {
$orderedpairs .= "[".$d."],[".$m."]"+"<br />";
}
echo $orderedpairs;
foreach($d=>m){
$orderedpairs.=“[”$d.“],[“$m.”]“+”
”; } echo$orderedpairs;

如果我用“echo”替换赋值运算符,它工作得很好,因此循环是正常的,我认为这只是变量赋值的问题。谢谢

这里有一个+用于连接。你需要


此外,您应该在循环之前将$orderedpairs定义为空字符串。

是否在循环之前将$orderedpairs声明为空字符串以进行实例化并将其纳入范围?最后的+也应该是a吗

加号导致连接失败-将其更改为


与其他人所说的相反,变量的范围不是问题所在。您可以在循环内声明它们,并在循环后访问它们。PHP变量的作用域与Java、C#和其他语言不同。

在您的情况下,实际上不需要连接运算符,您只需执行以下操作:

$orderedpairs .= "[$d],[$m]<br />";
$orderedpairs.=“[$d],$m]
”;

PHP将用变量的值替换变量。

写的是同样的东西!它现在只需按下“+”键即可工作。您能进一步解释一下为什么我需要在循环之外定义$orderedpairs吗?似乎范围不是问题。这只是一种风格吗?PHP的作用域比其他一些语言更简单。变量实际上只有一个“全局”或“函数”作用域-如果在函数中声明了变量,则在该函数中声明后,可以随时访问该变量。它是否在if语句、while循环或任何其他在Java这样的语言中被视为更窄范围的块中都无关紧要。我甚至不会说$orderedpairs的样式——我会在循环开始之前设置它,所以我知道它是空的。另外,一个未声明的变量会抛出一个警告。当我点击最后一个“+”时,它会起作用。但是,我还没有定义$orderedpairs。你能解释一下为什么我需要这么做吗?边注:考虑使用PrtTf或字符串插值使它更可读。(1) $orderedpairs.=“[$d],$m]
”;(2) $orderedpairs.=printf('[%s],%s]
',$d,$m);不要忘记在循环开始之前初始化$orderedpairs。忽略这一点本身并不是问题,但应该这样做——否则可能会抛出通知(并且可能会出现奇怪的bug或安全漏洞,请记住register_global)。