我想在foreach之外使用变量。我怎样才能在PHP中解决这个问题。如何在foreach之外使用$ ID?
foreach($row as $key => $value) {
$ID = $value['Id'];
}
答案 0 :(得分:5)
您的$ID
变量已经可以在foreach
之外使用了:控制结构没有自己的variable scope。
作为快速说明,代码的以下部分:
$ID = 0;
$array = array(1, 2, 3);
foreach ($array as $value) {
$ID = $value;
}
var_dump($ID);
会得到你:
int 3
这表明在$I
循环中使用的foreach
D变量与该循环外部存在的变量相同。
在评论后进行修改:
在循环之前不初始化变量,你会得到完全相同的结果:变量将在第一次使用时创建 - 并且它将与我发布的示例中的变量相同。
另一个例子,现在,使用foreach
循环中的函数(仅适用于PHP> = 5.3):
$array = array(1, 2, 3);
foreach ($array as $value) {
$func = function () use ($value) {
$ID = $value;
var_dump($ID);
};
$func();
}
var_dump($ID);
在那里,$ID
变量在循环之前没有初始化 - 它是在循环内部的函数中创建的。
此示例将获得以下输出:
int 1
int 2
int 3
( ! ) Notice: Undefined variable: ID ... on line 15
null
基本上:
$ID
变量正在获取值$ID
变量不存在。
$ID
变量与函数外部的$ID
变量不同:函数自带变量范围。答案 1 :(得分:1)
您可以在foreach
之外使用它,变量范围不受语句结构的限制。
另一方面,它们受功能范围的限制。
有关变量范围的更多信息,请参阅手册http://php.net/manual/en/language.variables.scope.php中的此页面。
答案 2 :(得分:0)
$ID = null;
foreach($row as $key => $value) {
$ID = $value['Id'];
}
//do something with $ID...
这样做的原因是,如果for循环永远不会通过(也就是说,$ row是一个空数组),则永远不会设置$ ID。因此,$ID
必须事先设置,否则根本不在范围内,如果您尝试访问$ID
的值,则会遇到错误。
答案 3 :(得分:0)
在foreach循环中有一个变量会影响它的范围。您可以自由地在foreach循环之前,之后或之中操纵该变量。
答案 4 :(得分:0)
依次将所有值分配给单个变量没有多大意义 如果你只想要最后一个,可以用
代替$value = array_pop($row);
$ID = $value['Id'];
但我怀疑这是你真正需要的。你想要解决的整个任务是什么? 可能你想要一个阵列?
$id_arr = array();
foreach($row as $key => $value) {
$id_arr[] = $value['Id'];
}