在日常的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 了,不然是獲取不到數據的
關鍵詞:



