php中函數(shù)的形參與實(shí)參的問題說明
更新時(shí)間:2010年09月01日 10:13:50 作者:
在定義或者使用php函數(shù)時(shí),應(yīng)該注意形參個(gè)數(shù)和實(shí)參個(gè)數(shù)的對(duì)應(yīng)關(guān)系。
當(dāng)實(shí)參個(gè)數(shù)<形參個(gè)數(shù) 時(shí)php會(huì)發(fā)出警告,因?yàn)閜hp的解釋機(jī)制會(huì)認(rèn)為,有參數(shù)被定義了卻沒有被使用,那很可能會(huì)影響函數(shù)的功能。所以會(huì)發(fā)出警告。然而,當(dāng) 實(shí)參個(gè)數(shù)>形參個(gè)數(shù) 時(shí),php是不會(huì)報(bào)錯(cuò)的,它只會(huì)取前面的幾個(gè)參數(shù),多余的則將會(huì)丟棄。
在PHP中編寫函數(shù),一般情況下調(diào)用函數(shù)的時(shí)候,改變的值都是形參而不是實(shí)參.但是如果在形參中加入地址符時(shí)候就會(huì)改變實(shí)參的值,為什么?
請(qǐng)看下面的例子:
<?php
//編寫一個(gè)函數(shù)swap(),測(cè)試該函數(shù)的實(shí)參值無改變
function swap($a,$b) {
echo "<p>進(jìn)入swqp()函數(shù)前<br>\n";
echo "交換前:形參a=$a,形參b=$b<br>\n";
$c=$b;
$a=$b;
$b=$c;
echo "交換后:形參a=$a,形參b=$b<br>\n";
echo "退出swap()函數(shù)<br></p>\n";
}
$variablea=5;
$variableb=10;
echo "調(diào)用swap()函數(shù)前: ";
echo "實(shí)參a=$variablea,實(shí)參b=$variableb<br>\n";
swap($variablea,$variableb);
echo "調(diào)用swap()函數(shù)后: ";
echo "實(shí)參a=$variablea,實(shí)參b=$variableb<br>\n";
?>
<?php
//測(cè)試swap()函數(shù)實(shí)參的值改變
function swap1(&$a,&$b) {
echo "<p>進(jìn)入swap1()函數(shù)<br>\n";
echo "交換前: 形參a=$a,形參b=$b<br>\n";
$c=$b;
$a=$b;
$b=$c;
echo "交換后: 形參a=$a,形參b=$b<br>\n";
echo "退出swap()函數(shù)<br></p>\n";
}
$variablea=5;
$variableb=10;
echo "調(diào)用swap1()函數(shù)前: ";
echo "實(shí)參a=$variablea,實(shí)參b=$variableb<br>\n";
swap1($variablea,$variableb);
echo "調(diào)用swap1()函數(shù)后: ";
echo "實(shí)參a=$variablea,實(shí)參b=$variableb<br>\n";
?>
//上面的兩個(gè)例子就是說明,求教了~~~
在PHP中編寫函數(shù),一般情況下調(diào)用函數(shù)的時(shí)候,改變的值都是形參而不是實(shí)參.但是如果在形參中加入地址符時(shí)候就會(huì)改變實(shí)參的值,為什么?
請(qǐng)看下面的例子:
復(fù)制代碼 代碼如下:
<?php
//編寫一個(gè)函數(shù)swap(),測(cè)試該函數(shù)的實(shí)參值無改變
function swap($a,$b) {
echo "<p>進(jìn)入swqp()函數(shù)前<br>\n";
echo "交換前:形參a=$a,形參b=$b<br>\n";
$c=$b;
$a=$b;
$b=$c;
echo "交換后:形參a=$a,形參b=$b<br>\n";
echo "退出swap()函數(shù)<br></p>\n";
}
$variablea=5;
$variableb=10;
echo "調(diào)用swap()函數(shù)前: ";
echo "實(shí)參a=$variablea,實(shí)參b=$variableb<br>\n";
swap($variablea,$variableb);
echo "調(diào)用swap()函數(shù)后: ";
echo "實(shí)參a=$variablea,實(shí)參b=$variableb<br>\n";
?>
復(fù)制代碼 代碼如下:
<?php
//測(cè)試swap()函數(shù)實(shí)參的值改變
function swap1(&$a,&$b) {
echo "<p>進(jìn)入swap1()函數(shù)<br>\n";
echo "交換前: 形參a=$a,形參b=$b<br>\n";
$c=$b;
$a=$b;
$b=$c;
echo "交換后: 形參a=$a,形參b=$b<br>\n";
echo "退出swap()函數(shù)<br></p>\n";
}
$variablea=5;
$variableb=10;
echo "調(diào)用swap1()函數(shù)前: ";
echo "實(shí)參a=$variablea,實(shí)參b=$variableb<br>\n";
swap1($variablea,$variableb);
echo "調(diào)用swap1()函數(shù)后: ";
echo "實(shí)參a=$variablea,實(shí)參b=$variableb<br>\n";
?>
//上面的兩個(gè)例子就是說明,求教了~~~
相關(guān)文章
Swoole 5將移除自動(dòng)添加Event::wait()特性詳解
這篇文章主要給大家介紹了關(guān)于Swoole 5將移除自動(dòng)添加Event::wait()特性的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Swoole5具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
php+Mysqli利用事務(wù)處理轉(zhuǎn)賬問題實(shí)例
這篇文章主要介紹了php+Mysqli利用事務(wù)處理轉(zhuǎn)賬問題的方法,實(shí)例分析了php+mysqli處理事務(wù)的提交與回滾的技巧,需要的朋友可以參考下2015-02-02
基于php導(dǎo)出到Excel或CSV的詳解(附utf8、gbk 編碼轉(zhuǎn)換)
本篇文章是對(duì)php導(dǎo)出到Excel或CSV(附utf8、gbk 編碼轉(zhuǎn)換)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
如何修改和添加Apache的默認(rèn)站點(diǎn)目錄
本篇文章是對(duì)修改和添加Apache的默認(rèn)站點(diǎn)目錄方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-07-07
PHP pthreads v3下同步處理synchronized用法示例
這篇文章主要介紹了PHP pthreads v3下同步處理synchronized用法,結(jié)合實(shí)例形式分析了PHP pthreads v3下同步處理synchronized原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2020-02-02
php反射學(xué)習(xí)之不用new方法實(shí)例化類操作示例
這篇文章主要介紹了php反射學(xué)習(xí)之不用new方法實(shí)例化類操作,結(jié)合實(shí)例形式進(jìn)一步分析了php基于反射不用new方法進(jìn)行實(shí)例化類的相關(guān)操作技巧,需要的朋友可以參考下2019-06-06

