【解迷糊】关于PHP的extract()函数提取出的变量的作用域问题

真理:该函数提取出的变量遵循 变量作用域 的原则,见下图:

四种情况:

class Test
{
    public function dosome()
    {
        $arr = [‘x‘ => ‘xing‘, ‘y‘ => ‘ya‘];
        extract($arr);
    }

    public function get()
    {
        return $x;
    }
}

$test = new Test();
$test->dosome();
$a = $test->get();
echo $a;  //无法打印
$arr = [‘x‘ => ‘xing‘, ‘y‘ => ‘ya‘];
if (true) {
    extract($arr);
}
echo $x;  //可以打印
function test1()
{
    $arr = [‘x‘ => ‘xing‘, ‘y‘ => ‘ya‘];
    extract($arr);
}

test1();
echo $x;   //无法打印
$arr = [‘x‘ => ‘xing‘, ‘y‘ => ‘ya‘];
extract($arr);
echo $x;   //可以打印
时间: 2024-10-14 20:51:18

【解迷糊】关于PHP的extract()函数提取出的变量的作用域问题的相关文章

C++拷贝函数的小结,关于变量的作用域等---ShinePans

#include <iostream> using namespace std; class circle { private: double r0; public: circle(double r) { r0 = r; cout << r << "调用了球体的初始化的函数\n"; } circle(const circle &t){ r0 = t.r0; cout << "r=" << r0 &l

PHP中extract()函数的妙用

看cakephp 2.3.8的源代码,很多地方都用 到 compact('name', 'response'); extract($status, EXTR_OVERWRITE); 这样的代码.compact()函数之前有查过, extract()函数用的比较少. 原来extract()是将数组的 "解开"成一个一个散开的变量,哈哈哈!!! -------------------------------------------------------------------------

extract函数在表单提交中提供的方便之处

extract - 从数组中将变量导入到当前的符号表 在form.html中, <!DOCTYPE html> <html> <head> <title>extract</title> <meta charset="utf-8"> </head> <body> <div> <form action="action.php" method="po

(转)PHP中extract()函数的妙用

近日在看一个牛人的代码时,看到一个非常好用的函数:extract(),它的主要作用是将数组展开,键名作为变量名,元素值为变量值,可以说为数组的操作提供了另外一个方便的工具,比方说,可以很方便的提取$_POST或者$_GET的元素,对表单提交上来的内容不能不用一一赋值,直接使用下面代码: form.html <form action="action.php" method="post"><input type="text" nam

php中的extract函数

extract函数用来将一个数字分解成多个变量直接使用,下面是W3C的解释:PHP extract() 函数从数组中把变量导入到当前的符号表中.对于数组中的每个元素,键名用于变量名,键值用于变量值.第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突.本函数返回成功设置的变量数目. 下面表格是参数说明: 语法extract(array,extract_rules,prefix) 参数 描述 array 必需.规定要使用的输入. ex

(转)PHP中extract()函数的妙用

近日在看一个牛人的代码时,看到一个非常好用的函数:extract(),它的主要作用是将数组展开,键名作为变量名,元素值为变量值,可以说为数组的操作提供了另外一个方便的工具,比方说,可以很方便的提取$_POST或者$_GET的元素,对表单提交上来的内容不能不用一一赋值,直接使用下面代码: form.html <form action="action.php" method="post"><input type="text" nam

PHP extract() 函数

定义和用法 PHP extract() 函数从数组中把变量导入到当前的符号表中. 对于数组中的每个元素,键名用于变量名,键值用于变量值. 第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突. 本函数返回成功设置的变量数目. 语法 extract(array,extract_rules,prefix) 参数 描述 array 必需.规定要使用的输入. extract_rules 可选.extract() 函数将检查每个键名是否为合法

实例详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化(一)

在数据库有外键的时候,使用 select_related() 和 prefetch_related() 可以很好的减少数据库请求的次数,从而提高性能.本文通过一个简单的例子详解这两个函数的作用.虽然QuerySet的文档中已经详细说明了,但本文试图从QuerySet触发的SQL语句来分析工作方式,从而进一步了解Django具体的运作方式. 本来打算写成一篇单独的文章的,但是写完select_related()之后发现长度已经有点长了,所以还是写成系列,大概在两到三篇.整个完成之后将会在这里添加上

实例详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化(三)

这是本系列的最后一篇,主要是select_related() 和 prefetch_related() 的最佳实践. 第一篇在这里 讲例子和select_related() 第二篇在这里 讲prefetch_related() 4. 一些实例 选择哪个函数 如果我们想要获得所有家乡是湖北的人,最无脑的做法是先获得湖北省,再获得湖北的所有城市,最后获得故乡是这个城市的人.就像这样: >>> hb = Province.objects.get(name__iexact=u"湖北省&