在日常的PHP项目代码编码的时候,return 和 echo 两个函数,是使用最多的基本函数,没有一个项目是不使用这两个函数的,这两个函数使用的方法是一样的,但是获得的结果稍有不同,今天就来看看这两个函数的使用方法和使用的地方。我们直接从项目中的代码来分析他倆的不同之处,这是一个APP的项目:
前端代码:
api.ajax({ url: '接口url地址', method: 'post', data: { } }, function(ret,err) { console.log(JSON.stringify(ret)); if(err){ console.log(JSON.stringify(err)); } });
其实这段代码很简单,就是一个ajax的查询代码,向后台发送请求获取后台传送过来的数据,我们主要来看看后台的代码,在使用return和echo的区别在哪。
//*************************** // 获取商品详情接口 //*************************** public function details(){ header('Content-type:text/html; Charset=utf8'); $pro_id = intval($_REQUEST['pro_id']); $pro = M('product')->where('id='.intval($pro_id).' AND del=0 AND is_down=0')->find(); if(!$pro){ echo json_encode(array('status'=>0,'err'=>'商品不存在或已下架!')); exit(); } //$content = preg_replace("/width:.+?[\d]+px;/",'',$pro['content']); $content = htmlspecialchars_decode($pro['content']); echo json_encode(array('status'=>1,'content'=>$content)); exit(); }
这是一个简单后台查询接口并返回数据的正确代码,其中返回代码我们使用的是echo来输出一个json格式的字符串,下面是接口获取到的数据
但是同样的代码,我们仅仅把echo 变成 return的时候呢?获取到的数据就变成了NULL,这是为什么呢,其实很多在刚开始写api接口的程序员,大部分都遇到这个问题,很疑惑不知道为什么使用echo就可以获取数据,而使用return就获取不到呢,其实原因很简单,returan常常使用在服务器内部来获取别的函数返回的值,不用输出在页面上面,return是语言中函数或者方法所代表的值,跟变量一样,储存在内存中。而服务器与客户端交互时,无法读取服务器的内存系统,所以只能通过文本这样的方式来交换信息。
所以要echo一段文本给客户端,更简单的方式来理解就是 return是指返回值不产生输出,而echo不是可以直接输出在页面上。Ajax请求就可以理解为在访问一个页面一样只有输出了才看得见信息,不然是看不到信息的,而return只在服务器内部传输,看不见所以页面上没有返回信息也就是获取不到。
所以在写PHP的API接口时候,记得返回数据使用echo而不要在使用return 了,不然是获取不到数据的
关键词: