Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menukar tatasusunan dua dimensi kepada tatasusunan satu dimensi dalam php

Bagaimana untuk menukar tatasusunan dua dimensi kepada tatasusunan satu dimensi dalam php

PHPz
PHPzasal
2023-04-23 10:23:171495semak imbas

Apabila melakukan beberapa operasi pemprosesan tatasusunan, kadangkala anda perlu menukar tatasusunan berbilang dimensi kepada tatasusunan satu dimensi Artikel ini akan memperkenalkan beberapa kaedah untuk menukar tatasusunan dua dimensi kepada tatasusunan satu dimensi dalam php.

Kaedah 1: Loop traversal

Kaedah mudah ialah menggunakan foreach loop untuk melintasi tatasusunan dua dimensi dan menambah elemennya pada tatasusunan satu dimensi.

function array2To1($arr2){
    $arr1 = array();
    foreach($arr2 as $v){
        foreach($v as $v2){
            $arr1[] = $v2;
        }
    }
    return $arr1;
}

Contoh penggunaan:

$arr2 = array(array(1,2),array(3,4),array(5,6));
$arr1 = array2To1($arr2);
print_r($arr1);
// Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )

Kaedah 2: Rekursi

Kaedah biasa lain ialah menggunakan rekursi untuk memproses tatasusunan berbilang dimensi, mengelupasnya dari lapisan dengan lapisan ke dalam tatasusunan satu dimensi.

function array2To1($arr2){
    $arr1 = array();
    foreach($arr2 as $v){
        if(is_array($v)){
            $arr1 = array_merge($arr1,array2To1($v));
        }else{
            $arr1[] = $v;
        }
    }
    return $arr1;
}

Contoh penggunaan:

$arr2 = array(array(1,2),3,array(array(4,5),6),7);
$arr1 = array2To1($arr2);
print_r($arr1);
// Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 )

Kaedah 3: Gunakan fungsi terbina dalam PHP

PHP menyediakan beberapa fungsi terbina dalam untuk mengendalikan tatasusunan berbilang dimensi, termasuk array_reduce(), array_merge_recursive() dan call_user_func_array() dsb.

function array2To1($arr2){
    return call_user_func_array('array_merge_recursive', $arr2);
}

Contoh penggunaan:

$arr2 = array(array(1,2),array(3,4),array(5,6));
$arr1 = array2To1($arr2);
print_r($arr1);
// Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )

Selepas ujian sebenar, menggunakan kaedah tiga lebih memakan masa, jadi kaedah ini tidak disyorkan apabila memproses tatasusunan besar.

Ringkasan:

Setiap kaedah mempunyai kelebihan dan kekurangannya sendiri, dan kaedah mana yang harus dipilih akhirnya bergantung pada keperluan dan senario tertentu. Saya harap artikel ini dapat membantu anda Jika anda mempunyai kaedah yang lebih baik, sila kongsikan di ruangan komen.

Atas ialah kandungan terperinci Bagaimana untuk menukar tatasusunan dua dimensi kepada tatasusunan satu dimensi dalam php. 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