Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar tatasusunan php kepada tatasusunan indeks

Bagaimana untuk menukar tatasusunan php kepada tatasusunan indeks

PHPz
PHPzasal
2023-04-26 14:19:13604semak imbas

Dalam pengaturcaraan PHP, tatasusunan ialah jenis data yang sangat penting, yang memudahkan kami menyimpan, memproses dan mengendalikan data. Antaranya, tatasusunan indeks ialah salah satu jenis tatasusunan yang paling biasa digunakan Ia menggunakan nombor sebagai nama kunci, sepadan dengan nilai berangka atau nilai rentetan. Di sini kita akan membincangkan cara melakukan pilih atur pada tatasusunan yang diindeks.

1. Kaedah pengisihan tatasusunan

Dalam PHP, kita boleh menggunakan fungsi sort() untuk mengisih tatasusunan indeks dalam tertib menaik, dan fungsi rsort() untuk mengisih tatasusunan indeks dalam menurun tertib, seperti yang ditunjukkan di bawah:

//升序排列 
$numbers = array(3, 1, 5, 2, 4); 
sort($numbers); 
print_r($numbers); 

//降序排列 
$numbers = array(3, 1, 5, 2, 4);  
rsort($numbers);  
print_r($numbers);

Hasil keluaran ialah:

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 ) 
Array ( [0] => 5 [1] => 4 [2] => 3 [3] => 2 [4] => 1 )

2. Kaedah transposisi tatasusunan

Transposisi tatasusunan merujuk kepada pertukaran baris dan lajur dalam suatu tatasusunan berbilang dimensi. Sebagai contoh, untuk tatasusunan dua dimensi:

$nums = array( 
    array(1, 2, 3), 
    array(4, 5, 6), 
    array(7, 8, 9) 
);

kita boleh menggunakan fungsi array_map() dan nilai nol untuk mengubahnya, seperti berikut:

function transposeArray($array, $nullFiltered = true) { 
    $aOut = array_map(null, ...$array); 
    return ($nullFiltered) ? array_filter($aOut) : $aOut; 
} 
 
print_r(transposeArray($nums));

Hasil output ialah :

Array ( 
    [0] => Array ( [0] => 1 [1] => 4 [2] => 7 ) 
    [1] => Array ( [0] => 2 [1] => 5 [2] => 8 ) 
    [2] => Array ( [0] => 3 [1] => 6 [2] => 9 ) 
)

Di sini, kita mula-mula mentakrifkan fungsi yang dipanggil transposeArray, menghantar dalam tatasusunan dan pembolehubah Boolean. Antaranya, kami menggunakan parameter panjang boleh ubah (...$array) yang diperkenalkan dalam versi PHP 5.6 untuk melaksanakan nilai nol bagi setiap sub-array dalam tatasusunan berbilang dimensi yang akan ditranspose. Akhir sekali, kami menggunakan fungsi array_filter() untuk menapis nilai nol dalam tatasusunan hasil dan mendapatkan hasil yang diperlukan.

3. Gabungan pengisihan dan transposisi tatasusunan

Dalam proses pengaturcaraan sebenar, kita selalunya perlu mengisih tatasusunan berbilang dimensi mengikut kata kunci tertentu, dan selepas mengisih, kita juga perlu Tatasusunan diubah. Sebagai contoh, kita mempunyai tatasusunan bersekutu berikut dengan nombor sebagai kunci:

$arr = array(
    3 => array("name" => "apple", "price" => 2.5),
    1 => array("name" => "banana", "price" => 1.5),
    4 => array("name" => "orange", "price" => 3.5),
    2 => array("name" => "pear", "price" => 2.0)
);

Seterusnya, kita boleh menentukan fungsi sortArray() untuk mengisih tatasusunan dalam tertib menaik mengikut 'harga' dan menukar tatasusunan hasil Semasa proses ini, anda juga boleh memasukkan nama medan untuk mengisih mengikut medan yang berbeza Kodnya adalah seperti berikut:

function sortArray($arr, $keyName = '', $sortOrder = 'ASC') {
    $sortResult = array();
    $arrLen = count($arr);
    if ($arrLen > 0) {
        $priceArr = array();
        for ($i = 0; $i < $arrLen; $i++) {
            if ($keyName != &#39;&#39; && isset($arr[$i][$keyName])) {
                $priceArr[] = $arr[$i][$keyName];
            } else {
                $priceArr[] = $arr[$i][&#39;price&#39;];
            }
        }
        if (strtolower($sortOrder) == &#39;desc&#39;) {
            array_multisort($priceArr, SORT_DESC, SORT_NUMERIC, $arr);
        } else {
            array_multisort($priceArr, SORT_ASC, SORT_NUMERIC, $arr);
        }
        $sortResult = transposeArray($arr);
    }
    return $sortResult;
}

print_r(sortArray($arr, &#39;price&#39;, &#39;ASC&#39;));

Apabila kami memasukkan 'harga' sebagai parameter kedua, hasil output ialah :

Array ( 
    [name] => Array ( [0] => banana [1] => pear [2] => apple [3] => orange ) 
    [price] => Array ( [0] => 1.5 [1] => 2 [2] => 2.5 [3] => 3.5 ) 
)

Di sini, kita mula-mula menentukan sama ada tatasusunan masuk kosong Jika tidak, mula-mula dapatkan nilai harga dalam tatasusunan asal dan gunakan fungsi array_multisort() untuk mengisih tatasusunan dalam susunan menaik atau menurun. . Kemudian, kami menggunakan fungsi transposeArray() untuk menukar tatasusunan yang terhasil.

Ringkasan

Ringkasnya, artikel ini memperkenalkan kaedah menyusun tatasusunan indeks dalam PHP. Pengisihan dilaksanakan melalui fungsi sort() dan rsort(), transpose array dilaksanakan menggunakan fungsi transposeArray() dan tatasusunan berbilang dimensi diisih mengikut medan dan ditranspose menggunakan gabungan pengisihan dan transposisi. Menguasai kaedah ini akan membawa lebih banyak kemudahan dan fleksibiliti kepada pengaturcaraan PHP kami dan meningkatkan kecekapan pembangunan program kami.

Atas ialah kandungan terperinci Bagaimana untuk menukar tatasusunan php kepada tatasusunan indeks. 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