Rumah >pembangunan bahagian belakang >masalah PHP >Cara menggunakan PHP untuk menukar tatasusunan objek dua dimensi

Cara menggunakan PHP untuk menukar tatasusunan objek dua dimensi

PHPz
PHPzasal
2023-04-23 09:10:36738semak imbas

Dalam PHP, kami sering menggunakan tatasusunan untuk menyimpan dan memanipulasi data. Dalam aplikasi praktikal, kadangkala kita perlu menukar tatasusunan objek dua dimensi. Transposisi yang dipanggil adalah untuk menukar baris asal menjadi lajur dan lajur menjadi baris. Artikel ini akan memperkenalkan cara menggunakan PHP untuk mengubah susunan objek dua dimensi.

  1. Data asal

Andaikan kita mempunyai $data tatasusunan objek dua dimensi, yang mengandungi nama pelajar dan gred setiap mata pelajaran, contohnya:

$data = array(
  array('name'=>'小明', 'Math'=>90, 'English'=>85, 'Chinese'=>93),
  array('name'=>'小红', 'Math'=>88, 'English'=>92, 'Chinese'=>89),
  array('name'=>'小刚', 'Math'=>95, 'English'=>87, 'Chinese'=>94)
);

Tatasusunan ini boleh diwakili sebagai jadual 3x4, seperti yang ditunjukkan di bawah:

姓名 Math English Chinese
小明 90 85 93
小红 88 92 89
小刚 95 87 94

Matlamat kami adalah untuk menukar jadual ini ke dalam jadual 4x3, di mana baris Satu ialah nama mata pelajaran, dan selebihnya adalah gred setiap pelajar. Seperti yang ditunjukkan di bawah:


小明 小红 小刚
Math 90 88 95
English 85 92 87
Chinese 93 89 94
  1. Kaedah transpose

Untuk menukar tatasusunan dua dimensi, kita boleh mengikuti langkah berikut:

  • Buat tatasusunan dua dimensi $hasil, bilangan baris ialah bilangan lajur tatasusunan asal, dan bilangan lajur ialah bilangan baris tatasusunan asal
  • Lintas tatasusunan asal dan subskrip baris setiap elemen Bertukar dengan subskrip lajur dan simpannya dalam kedudukan yang sepadan dalam $result
  • mengembalikan $result.

Dalam PHP, kita boleh menggunakan kod berikut untuk melaksanakan transposisi tatasusunan objek dua dimensi:

function transpose($data) {
    //获取原数组的行数和列数
    $rows = count($data);
    $cols = count($data[0]) - 1;

    //创建一个新的二维数组
    $result = array();
    for($i=0; $i<=$cols; $i++) {
        $result[$i] = array();
    }

    //遍历原数组,将每个元素的行下标和列下标互换
    for($row=0; $row<$rows; $row++) {
        for($col=1; $col<=$cols; $col++) {
            $result[$col-1][$row] = $data[$row][&#39;name&#39;];
            $result[$col-1][$row+1] = $data[$row]["Math"];
            $result[$col-1][$row+2] = $data[$row]["English"];
            $result[$col-1][$row+3] = $data[$row]["Chinese"];
        }
    }

    return $result;
}

Fungsi ini menerima tatasusunan objek dua dimensi $data sebagai parameter dan mengembalikan Tatasusunan dua dimensi yang ditranspos. Pelaksanaan khusus dibahagikan kepada langkah berikut:

  • Mula-mula dapatkan bilangan baris dan lajur tatasusunan asal Ambil perhatian bahawa di sini sebenarnya bilangan lajur tolak satu, kerana elemen pertama ialah nama daripada subjek;
  • Kemudian buat tatasusunan dua dimensi $hasil, bilangan baris ialah bilangan lajur tatasusunan asal dan bilangan lajur ialah bilangan baris asal tatasusunan;
  • Kemudian melalui gelung berganda, tatasusunan asal ialah Subskrip baris dan subskrip lajur setiap elemen ditukar dan disimpan dalam kedudukan yang sepadan dalam $result; akhirnya mengembalikan $result.
  • Perhatikan bahawa fungsi ini dilaksanakan untuk struktur tatasusunan asal yang khusus. Jika struktur tatasusunan asal berbeza, fungsi itu mungkin perlu diubah suai dengan sewajarnya.

Contoh penggunaan
  1. Berikut ialah contoh penggunaan:

Outputnya adalah seperti berikut:
$data = array(
    array(&#39;name&#39;=>'小明', 'Math'=>90, 'English'=>85, 'Chinese'=>93),
    array('name'=>'小红', 'Math'=>88, 'English'=>92, 'Chinese'=>89),
    array('name'=>'小刚', 'Math'=>95, 'English'=>87, 'Chinese'=>94)
);

$result = transpose($data);

//输出转置后的数组
foreach($result as $row) {
    echo implode("\t", $row) . "\n";
}

小明    小红    小刚
90      88      95
85      92      87
93      89      94
Ringkasan
  1. Artikel ini memperkenalkan cara menggunakan PHP untuk melaksanakan transposisi tatasusunan objek dua dimensi. Transpose ialah operasi yang sangat biasa yang boleh menukar data dengan mudah antara baris dan lajur untuk menjadikannya lebih baik memenuhi beberapa keperluan. Walaupun PHP menyediakan banyak fungsi pemprosesan tatasusunan, transposisi tidak menyediakan fungsi yang sepadan, tetapi kita boleh menggunakan gelung mudah untuk mencapainya.

Atas ialah kandungan terperinci Cara menggunakan PHP untuk menukar tatasusunan objek dua dimensi. 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