
正文
php和c数据互传 php之间传递数据
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
关于php调用文件及参数传递的问题
require相当于把指定文件的代码换到当前位置,例如
//a.php
$a=1;
$b=2;
//b.php
$c=3;
require_once('a.php');
$d=4;
在执行b.php时,相当于b.php内容如下
$c=3;//b.php中原内容
$a=1;//a.php中的内容
$b=2;//a.php中的内容
$d=4;//b.php中原内容
就是替换的关系,所以变量是通用的,不需要任何传值,可以理解为2个文件合并到一起
建议用require_once以防止多次循环引用出错
相关问答
Q1: php文件与php文件之间如何传递数据?
通过session来储存
?php
session_start();
$_SESSION['username'] = "userName";
?
在其它页面直接取出就行了
?
session_start();
echo $_SESSION['username'];
?
通过url传向其它页面传递参数
other.php?user=xxx
或在php重定向到其它页面时
$username = "xxx";
$home_url = 'logIn.php?user='.$username;
header('Location:'.$home_url);
其它页面用$_GET["user"]来接收
3.通过表单向其它页面传送参数
其它页面用$_POST["user"]来接收
Q2: php怎么提交数据到另一个网站,然后要他返回一个值
这个可以通过PHP的curl请求来提交数据到其php和c数据互传他的网站php和c数据互传!获取执行的结果即可php和c数据互传!以下是一个示例。
function curlpost($data,$url){ //curlpost提交函数
$data=array('data'=$data);
$ch = curl_init ();
curl_setopt ($ch, CURLOPT_URL, $url );
curl_setopt ($ch, CURLOPT_POST, true );
curl_setopt ($ch, CURLOPT_HEADER, 0 );
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ($ch, CURLOPT_POSTFIELDS, $data );
$state=curl_exec ($ch );
curl_close ($ch );
return $state;
}
Q3: php和c,c++的区别是什么?
的区别:
一个有protected成员变量(假设为i)的类型Base,他的子类Derived直接继承自Base,同时Derived有一个成员函数func,他的参数是Base类型的,这个函数可以访问Base对象的protecte的成员吗?在C++中不可以,而在PHP中可以。
关于重载:
PHP中不支持C++中的重载,重新定义个函数(不管是参数相同还是不同,都会导致重复定义错误)。PHP有自己的重载方法,而且比C++中的更广泛,他不仅可以重载函数(通过使用__call()方法),还可以重载成员变量(通过使用__get()和__set())。而C++中只能对函数进行重载,而且重载的方法只有:不同的参数类型,不同的函数修饰符(const)。
关于abstract和interface
PHP中有这两个修饰符,因为PHP不支持对一个普通类的多继承,因此interface用于实现多继承。Abstract类在C++中也存在,只是实现方式不一样,C++中使用pure virtual函数来表明这个类是抽象类,不能单独被实例化。而PHP中不仅可以使用函数的修饰符abstract(另外class前也必须标明abstract)来标明这个意思,也可以只使用abstract修饰符修饰class更直接的表明他是抽象类。另外, C++中的pure virtual函数不受访问类型的限制,不管是什么访问类型,都会被看作是public;而php中的abstract函数不能被声明成private,仅此而已。
多态
因为PHP是弱类型语言,所以他的多态性到处都有体现,导致他的多态性不像C++中那么明显。比如,在PHP中基类的函数可以看作全是virtual的,因此它不需要加任何修饰符,子类中和基类同名的函数都会被动态调用,而C++不一样,如果基类中的这个函数没有加virtual修饰符,子类中的那个同名函数就不会被动态调用,只能静态调用了。
操作符重载
PHP中不存在,而C++存在。重点在==操作符,在PHP中他可以运用在任何类型上,即使这个类型没有(像C++中一样)写自己的==重载函数。PHP中对于对象的比较,==表示两个对象的属性和值都一样,而且类型也一样;PHP也存在一个===操作符,表示他们引用了同一个对象,这跟java中很像吧。
final关键字
PHP中存在这个关键字,表示这个函数不能被重写(如果他用来修饰函数),或者类不能被继承(如果用类修饰class)。而C++中没有这个关键字,也无法模拟出那个效果。
对象赋值和拷贝
C++中的拷贝或者赋值大致有这三种方式。
一种是指针的赋值,即p1 = obj,相当于PHP和java中的赋值操作;
另一种是memberwise assignment,也就是在obj1 = obj2时发生的事情,默认情况下执行浅度拷贝,和PHP中clone的效果一样。他可以通过重载赋值拷贝操作来执行你的深度拷贝或者其他自定义的拷贝,这就相当于PHP中的__clone()成员函数;
第三种是memberwise initialization,也就是在参数传递时,传递返回值时或者包含对象的容器初始化的时候自动运行的,你可以通过自己定义拷贝构造函数来控制它的效果。
拷贝构造函数在PHP中几乎用不到,因为他的传递是完全按引用传递,而不是对象的直接拷贝。
Q4: PHP怎么与C语言通信?
/*server.c*/
#include string.h
#include stdio.h
#include netinet/in.h
#include stdlib.h
#define SERV_PORT 8000
int main()
{
int sockfd,n,servaddr_len,client_len,connfd;
char * server_ip = "127.0.0.1";
char buf[80];
struct sockaddr_in server,client;
sockfd = socket (AF_INET,SOCK_STREAM,0);
bzero(server,sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr(server_ip);
server.sin_port = htons(SERV_PORT);
servaddr_len = sizeof(server);
client_len=sizeof(client);
bind(sockfd,(struct sockaddr *) server,servaddr_len);
listen(sockfd,6);
while(1)
{
bzero(buf,sizeof(buf));
printf("等待读取数据.......\n");
connfd=accept(sockfd,(struct sockaddr *)client,client_len);
n = read(connfd,buf,sizeof(buf));
write(connfd,buf,n);
printf("读取的数据为:%s\n",buf);
}
close(sockfd);
return 0;
}
?php
$server_ip="127.0.0.1";
$port = 8000;
if($_POST['submit'])
{
$buf=trim($_POST['buf']);
$sockfd=socket_create(AF_INET,SOCK_STREAM,SOL_TCP)or die("创建失败");
socket_connect($sockfd,$server_ip,$port)or die("连接错误");
socket_write($sockfd,$buf,strlen($buf))or die("写入错误");
$a=socket_read($sockfd,80);
echo $a;
$buf="";
socket_close($sockfd);
}
?
form action="tcpclient.php" method="post"
请选则发送方式:brinput type=text name="buf"
input type=submit name="submit" value="发送"
/form
tcp方式不能通信解决方法
执行:getsebool -a |grep http
查看httpd_can_network_connect -- off 是否为打开状态
执行:setsebool httpd_can_network_connect on 把httpd_can_network_connect设置为打开状态
tcp方式不能通信解决方法
执行:getsebool -a |grep http
查看httpd_can_network_connect -- off 是否为打开状态
执行:setsebool httpd_can_network_connect on 把httpd_can_network_connect设置为打开状态
Q5: php值传递和引用传递
值传递是将右边变量的数据值本身,拷贝一份,赋值给左边变量。
例如:
可见:值传递之后,两个变量互不影响,相互独立,没有关系了,各自有各自的存放空间,改变一个,另一个不受影响。
原理如下:
引用传递是将右边变量对数据的引用关系,传给左边的变量
原理如下:
引用传递,后一个变量的值,会随着前一个变量的值的改变而改变。
关于php和c数据互传和php之间传递数据的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







