PHP Academy · Pelajaran

Tatasusunan Berbilang Dimensi

Bina dan navigasi tatasusunan yang mengandungi tatasusunan.

Pelajaran 2 daripada 413 langkah

Tatasusunan Berbilang Dimensi ialah pelajaran PHP Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran PHP Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus PHP Academy merangkumi sejumlah 4 pelajaran.

Tatasusunan Berbilang Dimensi

Tatasusunan berbilang dimensi ialah tatasusunan yang setiap unsurnya sendiri merupakan tatasusunan. Tatasusunan ini biasa digunakan untuk data berstruktur seperti hasil pangkalan data atau pepohon konfigurasi.

Penciptaan Tatasusunan 2D

Cipta dan akses tatasusunan dua dimensi:

<?php
$matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
];

echo $matrix[1][2]; // 6 (row 1, col 2)
$matrix[0][0] = 99;
echo $matrix[0][0]; // 99

Tatasusunan Tatasusunan Bersekutu

Set hasil pangkalan data selalunya terdiri daripada tatasusunan bersekutu:

<?php
$users = [
    ['id' => 1, 'name' => 'Alice', 'role' => 'admin'],
    ['id' => 2, 'name' => 'Bob',   'role' => 'user'],
    ['id' => 3, 'name' => 'Carol', 'role' => 'user'],
];

echo $users[0]['name'];  // Alice
echo count($users);      // 3

Mengulangi Tatasusunan 2D

Gunakan foreach bersarang untuk mengulangi semua baris dan lajur:

<?php
$products = [
    ['name' => 'Widget', 'price' => 9.99],
    ['name' => 'Gadget', 'price' => 24.99],
];

foreach ($products as $product) {
    echo $product['name'] . ': $' . $product['price'] . PHP_EOL;
}

Mengakses Kunci Bersarang dengan Selamat

Gunakan operator penggabungan NULL untuk mengakses kunci bersarang yang mungkin tidak wujud dengan selamat:

<?php
$config = [
    'database' => ['host' => 'localhost', 'port' => 3306],
    'cache'    => ['driver' => 'redis'],
];

$port     = $config['database']['port'] ?? 3306;
$password = $config['database']['password'] ?? '';

echo $port;     // 3306
echo $password; // (empty)

Menambah pada Tatasusunan Bersarang

Tambahkan unsur jauh di dalam tatasusunan berbilang dimensi:

<?php
$app = [];
$app['settings']['theme'] = 'dark';
$app['settings']['lang']  = 'en';

$app['users'][] = ['name' => 'Alice'];
$app['users'][] = ['name' => 'Bob'];

echo count($app['users']);       // 2
echo $app['settings']['theme'];  // dark

array_column()

array_column() mengekstrak satu lajur daripada tatasusunan 2D:

<?php
$users = [
    ['id' => 1, 'name' => 'Alice'],
    ['id' => 2, 'name' => 'Bob'],
    ['id' => 3, 'name' => 'Carol'],
];

$names = array_column($users, 'name');
print_r($names); // ['Alice', 'Bob', 'Carol']

// Re-index by id
$byId = array_column($users, null, 'id');
echo $byId[2]['name']; // Bob

Mengisih Tatasusunan 2D

Isih baris mengikut nilai medan menggunakan usort():

<?php
$products = [
    ['name' => 'C Item', 'price' => 30],
    ['name' => 'A Item', 'price' => 10],
    ['name' => 'B Item', 'price' => 20],
];

usort($products, fn($a, $b) => $a['price'] <=> $b['price']);

foreach ($products as $p) {
    echo $p['name'] . PHP_EOL; // A Item, B Item, C Item
}

Operasi Rekursif dengan array_walk_recursive

Laksanakan fungsi panggil balik pada setiap daun dalam tatasusunan bersarang dengan array_walk_recursive():

<?php
$data = ['a' => 'hello', 'b' => ['c' => 'world', 'd' => 'php']];

array_walk_recursive($data, function(&$val) {
    $val = strtoupper($val);
});

print_r($data);
// ['a'=>'HELLO', 'b'=>['c'=>'WORLD','d'=>'PHP']]

JSON dan Tatasusunan Berbilang Dimensi

Tatasusunan berbilang dimensi PHP dipetakan terus kepada objek dan tatasusunan JSON:

<?php
$data = [
    'user'    => ['id' => 1, 'name' => 'Alice'],
    'scores'  => [95, 87, 92],
    'active'  => true,
];

$json = json_encode($data, JSON_PRETTY_PRINT);
echo $json;

$decoded = json_decode($json, true); // true = assoc array
echo $decoded['user']['name']; // Alice

array_merge berbanding array_replace untuk Tatasusunan Bersarang

array_merge tidak bersifat rekursif; gunakan array_replace_recursive untuk menggabungkan tatasusunan bersarang dengan betul:

<?php
$defaults = ['db' => ['host' => 'localhost', 'port' => 3306]];
$custom   = ['db' => ['host' => 'production.server.com']];

$config = array_replace_recursive($defaults, $custom);
echo $config['db']['host'];  // production.server.com
echo $config['db']['port'];  // 3306 — preserved from defaults

Semakan Pantas

Fungsi manakah yang mengekstrak satu lajur nilai daripada tatasusunan 2D?

Ringkasan: Tatasusunan Berbilang Dimensi

Perkara utama:

  • Sarangkan tatasusunan sedalam mana-mana tahap
  • Gunakan ?? untuk mengakses kunci bersarang yang tiada dengan selamat
  • array_column() mengekstrak lajur atau mengindeks semula berdasarkan kunci
  • usort() dengan pembanding mengisih berdasarkan mana-mana medan
  • array_walk_recursive() untuk transformasi mendalam
  • array_replace_recursive() untuk penggabungan mendalam
Percuma untuk bermula

Pelajari PHP dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
49
Pelajaran
195

Soalan Lazim

Adakah pelajaran “Tatasusunan Berbilang Dimensi” percuma?

Ya — teks penuh “Tatasusunan Berbilang Dimensi” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus PHP Academy, tingkat taraf kepada CoddyKit PRO. Kursus PHP Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Tatasusunan Berbilang Dimensi”?

Bina dan navigasi tatasusunan yang mengandungi tatasusunan. Anda berlatih PHP Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan PHP Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran PHP Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Tatasusunan Berbilang Dimensi” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Tatasusunan Berindeks dan Bersekutu
  2. Tatasusunan Berbilang Dimensi
  3. Mengisih dan Mencari Tatasusunan
  4. Fungsi Transformasi Tatasusunan
← Kembali ke PHP Academy