我想在我的foreach之外使用一个变量.我怎样才能在PHP中解决这个问题.如何在foreach之外使用$ ID?
foreach($row as $key => $value) {
$ID = $value['Id'];
}
Run Code Online (Sandbox Code Playgroud)
您的$ID变量已经可以在您的外部使用foreach:控制结构没有自己的变量范围.
作为快速说明,以下部分代码:
$ID = 0;
$array = array(1, 2, 3);
foreach ($array as $value) {
$ID = $value;
}
var_dump($ID);
Run Code Online (Sandbox Code Playgroud)
会得到你:
int 3
Run Code Online (Sandbox Code Playgroud)
这表明$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);
Run Code Online (Sandbox Code Playgroud)
在那里,$ID变量在循环之前没有被初始化 - 它是在循环内部的函数中创建的.
此示例将获得以下输出:
int 1
int 2
int 3
( ! ) Notice: Undefined variable: ID ... on line 15
null
Run Code Online (Sandbox Code Playgroud)
基本上:
$ID变量,在匿名函数内,正在获得一个值$ID变量不存在.
$ID函数内部创建的$ID变量与函数外部的变量不同:函数带有自己的变量范围.