Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah tatasusunan php jenis rujukan?

Adakah tatasusunan php jenis rujukan?

青灯夜游
青灯夜游asal
2022-09-20 19:08:592020semak imbas

Tatasusunan PHP bukan jenis rujukan, tetapi jenis nilai pembolehubah (salinan) dicipta apabila memberikan nilai kepada tatasusunan, jadi mengubah suai pembolehubah lain tidak akan menjejaskan tatasusunan itu sendiri. Dan pemindahan tatasusunan PHP ialah pemindahan nilai apabila memanggil fungsi, menetapkan tatasusunan PHP sebagai parameter sebenar kepada parameter formal dan mengubahsuainya dalam fungsi itu tidak akan menjejaskan tatasusunan itu sendiri, menunjukkan bahawa pemindahan dalam proses ini adalah pemindahan nilai, dan pembolehubah tatasusunan bukanlah rujukan kepada tatasusunan ini sendiri.

Adakah tatasusunan php jenis rujukan?

Persekitaran pengendalian tutorial ini: sistem Windows 7, PHP versi 8.1, komputer DELL G3

Dalam PHP, kebanyakan pembolehubah Jenis seperti rentetan, integer, titik terapung, tatasusunan, dll. adalah semua jenis nilai, manakala kelas dan objek adalah jenis rujukan Apabila menggunakannya, anda perlu memberi perhatian kepada perkara ini.

Pembolehubah PHP disimpan dalam memori seperti ini yang disimpan oleh pembolehubah bukan secara langsung kandungan nilai, tetapi alamatnya. Contohnya:

$a = 1;

Nampaknya pembolehubah $a menyimpan nilai 1 secara langsung. Situasi sebenar ialah penterjemah PHP mencipta pembolehubah $a, menyimpan nilai: 1 di suatu tempat dalam memori, dan kemudian menyimpan alamat nilai dalam pembolehubah $a.

Apabila anda perlu mendapatkan nilai, mula-mula cari alamat dalam pembolehubah $a, dan kemudian cari nilai pembolehubah berdasarkan alamat.

Lihat ke bawah:

echo $a;

akan mengeluarkan 1. Jurubahasa PHP akan melengkapkan kod seperti ini: cari alamat yang disimpan dalam $a, dan cari alamat yang disimpan di suatu tempat dalam memori berdasarkan pada nilai alamat, keluarkan ke skrin.

Nampaknya seperti baris kod yang mudah, tetapi prosesnya seperti ini.

Lihat lebih jauh ke bawah:

$a = 1;
$b = &$a;

Pembolehubah $b di sini melakukan operasi yang menarik Simbol & mengeluarkan alamat yang disimpan dalam pembolehubah $a dan menyimpannya dalam pembolehubah $b .

Kemudian, jika anda menggunakan kod berikut:

echo $b;

Hasilnya juga akan menjadi output 1. Jurubahasa PHP mula-mula mengeluarkan alamat yang disimpan dalam $b, dan kemudian mencari nilai berdasarkan alamat. Jika kita melakukan operasi berikut:

$a = 2;
echo $b; //输出2

kita akan mendapati bahawa menukar nilai $a juga akan mengubah $b. Malah, sebaliknya, jika nilai $b diubah, nilai $a juga akan berubah dengan sewajarnya.

Pada ketika ini, kita boleh memastikan bahawa pembolehubah $a dan $b menyimpan alamat yang sama dan menghala ke nilai yang sama.

Kemudian, kita boleh membuat kesimpulan bahawa ia mewakili pembolehubah yang sama.

Untuk meringkaskan lagi, boleh disimpulkan bahawa jika dua pembolehubah menyimpan alamat yang sama, ia adalah pembolehubah yang sama.

Setelah memahami beberapa kandungan, kami mula memperkenalkan jenis nilai dan jenis rujukan.

Mari kita lihat kod berikut dahulu:

$a = 1;
$b = $a;
$a = 2;
echo $b; //输出 1

Tetapkan nilai $a kepada $b Selepas menukar nilai $a, nilai $b kekal tidak berubah Dengan kata lain, $a dan $b ialah dua pembolehubah berbeza yang menunjuk ke alamat yang berbeza. Bentuk tugasan yang mencipta pembolehubah berbeza ini dipanggil jenis nilai.

Lihat sekali lagi:

class User{
 public $name = ‘Tome‘;
}
$a = new User;
$b = $a;
$a->name = ‘Jim‘;
echo $b->name; //输出 Jim

Begitu juga tetapkan nilai $a kepada $b Selepas menukar $a, $b juga berubah, iaitu $a dan $b adalah Pembolehubah yang sama menghala ke alamat yang sama. Bentuk tugasan yang tidak mencipta pembolehubah baharu ini dipanggil jenis rujukan.

jenis nilai tatasusunan php

Penyerahan tatasusunan dalam PHP adalah mengikut nilai dan bukannya rujukan.

Apabila memanggil fungsi, tetapkan tatasusunan PHP sebagai parameter sebenar kepada parameter formal dan mengubah suainya dalam fungsi itu tidak akan menjejaskan tatasusunan itu sendiri.

Jelaskan bahawa pemindahan dalam proses ini adalah mengikut nilai Pembolehubah tatasusunan bukanlah rujukan kepada tatasusunan itu sendiri tatasusunan.

Ini sangat berbeza daripada bahasa lain (seperti c, Js, dsb.), jadi patut diberi perhatian!

Contohnya adalah seperti berikut:

$arr = array(
    'name' => 'corn',
    'age' => '24',
);
test_arr($arr);
function test_arr($arr){
    $arr['name'] = 'qqyumidi';
}
print_r($arr); //result: Array ( [name] => corn [age] => 24 )

Kod js adalah seperti berikut:

var arr = new Array('corn', '24');
test_arr(arr);
function test_arr(arr){
    arr[0] = 'qqyumidi';
}
console.log(arr);  //result:["qqyumidi", "24"]

Jika anda perlu menggunakan kesan hantaran rujukan untuk nilai lulus dalam PHP, anda boleh menggunakan borang Tambah aksara alamat & di hadapan parameter.

$aa = 100;
test_vars($aa);
function test_vars(&$aa){
    $aa = 200;
}
print_r($aa);   //result: 200

Pembelajaran yang disyorkan: "Tutorial Video PHP"

Atas ialah kandungan terperinci Adakah tatasusunan php jenis rujukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn