php小筆記 函數傳值細節分析 php 函數傳回值 php 數組 php date函

來源:互聯網
上載者:User
1.php函數傳遞參數的方式,到底是傳遞變數的地址還是傳遞變數的值;

1.1定義一個類

class Penson{

public $age;

public $name;

}

//執行個體化一個對象

$zs=new Penson();

$zs->age=10;

1.2 分別定義一個字串,數字,數組;

$str="string";

$num="0";

$myArray=(10,100,100);

1.3定義一個函數

funtion test($str,$num,$arr,$obj){

$str="change string";

$num=100;

$arr[0]=0;

$obj->age="100";

}

test($str,$num,$arr,$zs);

執行函數後分別列印:

echo $str; // string

echo $num; // 0

echo $arr[0]; // 10

echo $zs; // 100

結論:字元,數字,數組以參數的形式傳入函數是複製一份值傳遞到函數裡面的,而對象則是把指向對象的地址傳遞進函數裡面,所以當函數執行完後,當前函數在記憶體的棧被回收,所以建立的變數也銷毀,所以不會影響到外面的變數,但是對象傳進去的是地址,在函數裡面修改的實際上是通過傳進來的地址去操作對象,對象不能直接存取,只能通過地址的方式,所以函數裡面修改的對象在函數執行完畢後,其影響還在。

當然,如果你想其他類型的資料也像對象一樣,傳進函數的是地址,在函數修改外面的變數,這php也是可以做到的,只要傳參的時候這樣傳遞就可以了:

test(&$str,&$num,&$arr,$zs);

在變數前加上一個&符號,這樣不管什麼資料類型,在函數裡面修改的都會影響到函數外面的變數。

2.mysqli_insert_id($con)

有時候我們insert into後需要知道當前insert的資料在資料庫中自動產生的id,這個時候就可以用mysqli_insert_id()方法了,該方法帶一個參數,該參數為執行inser的用的資料庫連接,如果不加上返回內容會出現警告,但是也會插入成功。

3.在php中視圖擷取一個不存在的變數是可能會報錯,比如:$_POST["select"],如果select不存在,則會報錯,應該盡量用isset()方法判斷變數是否存在,然後再進行操作

4.用mysql建立表的時候切記要設定編碼:

CREATE TABLE message(

id int(10) auto_increment PRIMARY KEY NOT NULL,

username VARCHAR(16) NOT NULL,

message VARCHAR(32) NOT NULL,

time datetime NOT NULL )

//下面這句是用來設定編碼的,如果不設定可能會導致中文亂碼在資料庫中

ENGINE= MYISAM CHARACTER SET utf8 ;


以上就介紹了php小筆記 函數傳值細節分析,包括了php,函數方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.