当前位置:首页 » 编程语言 » php拷贝

php拷贝

发布时间: 2022-08-09 13:12:30

A. php如何复制文件和子文件夹中的文件到指定目录,保持路径顺序不变

//使用()

$r=('test/3.html','3.html');

if($r){
echo'Success';
}else{
echo'Fail';
}

B. php复制目录下的所有文件及文件夹

这个直接用下面这个函数就可以了,多看下手册,很多例子的啊。

function recurse_($src,$dst) { // 原目录,复制到的目录

$dir = opendir($src);
@mkdir($dst);
while(false !== ( $file = readdir($dir)) ) {
if (( $file != '.' ) && ( $file != '..' )) {
if ( is_dir($src . '/' . $file) ) {
recurse_($src . '/' . $file,$dst . '/' . $file);
}
else {
($src . '/' . $file,$dst . '/' . $file);
}
}
}
closedir($dir);
}

C. 把PHP程序拷贝到htdocs目录

htdocs就是upupw环境里配置了的网站存放目录,也就是网站根目录,拷贝就是复制的意思!

D. PHP复制文件 移动到其他文件夹内

PHP 中的 () 函数可以实现

() 函数拷贝文件。

(source,destination)

参数说明
source 必需。规定要复制的文件。
destination 必需。规定复制文件的目的地。

详细说明
将文件从 source 拷贝到 destination。如果成功则返回 TRUE,否则返回 FALSE。

提示:如果要移动文件的话,请使用 rename() 函数。

注释:从 PHP 4.3.0 开始,如果启用了 "fopen wrappers" 的话,source 和 destination 都可以是 URL。更多信息见 fopen()。如果 destination 是一个 URL,则如果封装协议不支持覆盖已有的文件时拷贝操作会失败。

重要事项:如果目标文件已存在,将会被覆盖。

例如:
<?php
echo ("source.txt","new_file/target.txt");
?>

E. PHP如何拷贝一个值,操作这个值不改变原值

php拷贝概念和大部分语言的拷贝概念一样。其实就是个值和引用的区别。一般而言,你实例化1个对象以后,把其赋值给某个变量,其实只是把这个实例在内存里的地址告诉了变量,所以当你把这个变量赋值给另外1个变量时候,2个变量都是保存了同一个实例的地址。当你通过其中1个变量去修改内容,那么你通过另外一个变量也能读取到修改后的值。
比如假设fooclass有个x的属性
$bar = new fooclass()
$foo = bar
这里的话,如果执行$foo.x = 5,那么$bar.x也是5
而fin_var这个拷贝函数,则是把实例在内存里边重新复制了1份并且把其返回。这种情况下$bar 和$foo已经指向不同的实例了。修改$foo的实例并不会对$bar产生影响。
还是上例,再执行$foo.x = 5 ,你访问$bar.x就不会是5了。而是其初始值。

F. php什么是浅拷贝,深

php浅拷贝:赋值时,引用赋值,相当于取了一个别名。对其中一个修改,会影响另一个
深拷贝:赋值时值完全复制,完全的,对其中一个作出改变,不会影响另一个

PHP中, = 赋值时,普通对象是深拷贝,但对对象来说,是浅拷贝。也就是说,对象的赋值是引用赋值。(对象作为参数传递时,也是引用传递,无论函数定义时参数前面是否有&符号)

G. php实现原型模式中深拷贝是什么意思

找工作之前制作简历时,需要做很多份简历,而且简历的格式是一样的,也就意味着要做很多重复性的工作。在编程过程中,遇到重复性工作多的时候,粘贴复制是最快的解决办法。但是一旦这些代码需要修改时,那么每一处用到这段代码的地方都需要进行修改,这也就增加了代码维护工作。在学习VB的时候,我们总是把相同的代码放在模块中,然后用到这段代码的地方就调用模块,这样的话耦合性又是比较大的。那么,解决这个问题到底该怎么办呢?

设计模式中的原型模式就很好的解决了这个问题。原型模式是用原型实例指定创建对象的种类,并且通过拷贝这些原型创建的对象。

也就是说,先生成一份模板,然后其余的对象都去拷贝这份模板,那么得到的对象就都是一样的了。

下面小编就以简历复制为例子,简单介绍原型模式:
[java] view plain print?
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">//工作经历类
class WorkExperience {
public String workDate;
public String company;
}

//简历类
class Resume implements Cloneable{
private String name;
private String sex;
private String age;

private WorkExperience work;

public Resume(String name){
this.name=name;
work=new WorkExperience;
}

//设置个人信息
public void SetPersonalInfo(String sex,String age){
this.sex=sex;
this.age=age;
}

//设置工作经历
public void SetWorkExperience(String workDate,String company){
work.workDate=workDate;
work.company=company;
}

public Object Clone(){
return this.Clone();
}
}

//客户端
class WorkResume{
public static void main(String[] args){
Resume a =new Resume("张三");
a.SetPersonalInfo("男","20");
a.SetWorkExperience("1998~2000","XX公司");
Resume b=(Resume)a.Clone();
b.SetWorkExperience("2000~2006","YY公司");
}
}</span></span>
这样设置完成之后得到的结果却是两条信息是一样的,而且工作经历都是最新的这一条。

做代码的内存分析,可得到如下图:

即a、b两个对象指向的是同一块内存,也就是说b在进行修改时,a的信息也会被修改,这也就是原型模式的浅复制。浅复制的意思就是说,只把对象a的引用复制给b,二者指向同一区域,当一个修改时,会影响另一个对象。

对代码进行修改,将工作经历类改为:
[java] view plain print?
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;">//工作经历类
class WorkExperience implements Cloneable{
private String workDate;
private String company;

public Object Clone(){
WorkExperience obj=new WorkExperience();
obj.workDate=this.workDate;
obj.company=this.company;
return obj;
}
}</span></span>

将简历类中的Clone方法改为:
[java] view plain print?
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;"> public Object Clone(){
Resume obj=new Resume(this.work);
obj.name=this.name;
obj.sex=this.sex;
obj.age=this.age;
return obj;
}</span></span>

并且在简历类中添加私有构造方法:
[java] view plain print?
<span style="font-family:KaiTi_GB2312;font-size:18px;"><span style="font-family:KaiTi_GB2312;font-size:18px;"> private Resume(WorkExperience work){
this.work=(WorkExperience)work.Clone();
} </span></span>
则得到的结果就是我们想要的结果了。

对新代码进行内存分析,如下图:

到此为止,原型模式的深浅复制就介绍完了,如果有什么理解不到位的地方,欢迎广大读者给出指导。

总结

深浅复制其实不难,只要把内存分析搞懂了就好了。浅复制是把一个对象的引用复制给另一个对象,二者对同一块内存区域进行操作,类似于参数传递中的传址。而深复制则是把原型对象的内存区域也复制一份给拷贝对象,二者各自拥有自己的引用,各自操作自己的内存区域,互不影响,类似于参数传递中的传值。

H. php如何真“拷贝”一个数组

参看以下代码:

<?php

$a=array(1,2);
$b=$a;//$b是一个和$a相同的新数组,就是你所说的真“拷贝”
$c=&$a;//$c是一个$a数组的引用,任何对$a的操作都会影响到$c
热点内容
扁桃玩的服务器地址 发布:2025-05-17 12:18:25 浏览:507
u盘上传歌 发布:2025-05-17 12:14:51 浏览:612
入门c语言设计 发布:2025-05-17 12:08:31 浏览:40
c3算法 发布:2025-05-17 12:04:19 浏览:364
phprecv 发布:2025-05-17 11:55:00 浏览:610
福建时钟监控网关服务器云主机 发布:2025-05-17 11:54:28 浏览:248
c数据库压缩 发布:2025-05-17 11:39:22 浏览:960
安卓手机如何连接音响功放 发布:2025-05-17 11:37:48 浏览:959
破解exe加密视频 发布:2025-05-17 11:23:41 浏览:976
我的世界服务器圈太大了怎么办 发布:2025-05-17 11:15:21 浏览:615