发布网友 发布时间:2022-04-06 02:43
共3个回答
懂视网 时间:2022-04-06 07:04
在php中可以使用“pg_lo_close”函数关闭一个大型对象,其语法是“pg_lo_close ( resource $large_object ) : bool”,参数“large_object”是该函数所返回的资源号。
推荐:《PHP视频教程》
pg_lo_close
(PHP 4 >= 4.2.0, PHP 5, PHP 7)
pg_lo_close — 关闭一个大型对象
说明
pg_lo_close ( resource $large_object ) : bool
pg_lo_close() 关闭一个大型对象。参数 large_object 是 pg_lo_open() 函数所返回的资源号。
要使用大型对象(lo)接口,需要将其放置在事务块中。
Note:
本函数以前的名字为 pg_loclose()。
参见 pg_lo_open(),pg_lo_create() 和 pg_lo_import()。
热心网友 时间:2022-04-06 04:12
要理解这个问题,关键是要理解php的赋值机制。其实就是四个字:“写时拷贝”。如下图,当把a的值赋给b,a和b的关系属于两个变量指向同一内容。但是当其中一个变量赋值为不同于当前内容的值时,才会重新分配一块内存来保存不同的变量,此时两个变量的指向内容变成两个,即所谓“写时拷贝”。
如果理解了“写时拷贝”的概念,我们继续。在以下代码后,继续增加一次输出。
class A {
public $foo = 1;
}
$a = new A;
$b = $a; // $a ,$b都是同一个标识符的拷贝
// ($a) = ($b) = <id>
$b->foo = 2;
echo $a->foo." ";
$b = 3;echo $a->foo;// 此为新增代码。根据写时拷贝原理,此时a仍指向对象内容。而b被赋值为3,因此b指向内容为3。
如果到此还没被搞蒙,继续进一步。
通过“&”赋值,跟以上赋值是有区别的,属于一块内存地址,拥有两个不同名称的情况。也就是说,其一改变,另一个会跟着改变。在以下代码后,继续增加一次输出。
$c = new A;
$d = &$c; // $c ,$d是引用
// ($c,$d) = <id>
$d->foo = 2;
echo $c->foo." ";
$b = 3;echo $a->foo;// 此为新增代码。此时a和b的值都指向3这个值,会报一个不是对象的错误,如果直接输出a或b会发现,两个变量的值都是3。现象请自行验证。
热心网友 时间:2022-04-06 05:30
对象比较特殊,它本身就通过引用来传递,所以你取地址符用在这里看不出区别,你随便用变量来看就会很明显:
<?php