为什么需要在循环之前预先定义PHP变量才能在循环内部(以及随后的循环之外)使用它?
假设$ results是一个整数数组。
foreach ($results as $key=>$value)
{
$a = $value[0];
echo "<BR>".$a;
}
echo "<BR>".$a;
会输出类似的内容:
1
5
7
25
undefined variable $a
我无法在该循环之外使用变量$ a(不以某种方式初始化它),因为它是“未定义的”。
尽管
$a;
foreach ($results as $key=>$value)
{
$a = $value[0];
echo "<BR>".$a;
}
echo "<BR>".$a;
会输出类似的内容:
1
5
7
25
25
我可以在外面的任何地方使用$ a。
我觉得它几乎就像一个可变范围问题。
答案 0 :(得分:5)
因为您尝试通过执行以下操作将字符串连接到不是字符串(或至少尚未存在)的字符串:
$source .= '<source type="' . $format . '" src="' . $src . '">';
//^ this dot means concat.
在第二个例子中,您在每次迭代中将变量重置为空字符串,声明应该在循环之前,而不是循环:
$source2 = '';
foreach( $formats as $format => $src ){
if ( !empty( $src ) ) {
$source2 .= '<source type="' . $format . '" src="' . $src . '">';
}
}
echo $source2;
正如@ drew010在他的评论中所述,该变量实际上是由php创建的,但你会得到通知显示(如果你有你的php设置,那么它们将被显示)。