Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyemak dimensi tatasusunan dalam php

Bagaimana untuk menyemak dimensi tatasusunan dalam php

DDD
DDDasal
2023-07-13 16:14:451552semak imbas

Cara untuk menyemak sama ada tatasusunan ialah tatasusunan beberapa dimensi dalam PHP: 1. Menggunakan pertimbangan pengulangan gelung, anda boleh menulis fungsi rekursif untuk melintasi tatasusunan dan memanggil fungsi yang sama secara rekursif apabila menemui tatasusunan bersarang dan apabila menghadapi elemen bukan tatasusunan , mengembalikan bilangan lapisan yang dilalui pada masa ini 2. Gunakan fungsi "array_filter" untuk membandingkan sama ada jumlah bilangan elemen tatasusunan dan kiraan rekursif adalah sama tatasusunan ialah tatasusunan berbilang dimensi 3. Gunakan fungsi array_walk_recursive, dsb.

Bagaimana untuk menyemak dimensi tatasusunan dalam php

Persekitaran pengendalian artikel ini: Sistem Windows 10, versi php8.1.3, komputer dell g3.

Dalam PHP, menyemak sama ada tatasusunan ialah tatasusunan satu dimensi atau tatasusunan berbilang dimensi ialah tugas biasa. Apabila berurusan dengan operasi tatasusunan, adalah penting untuk memahami dimensi tatasusunan kerana ia mempengaruhi kaedah yang kami gunakan untuk melintasi dan memanipulasi tatasusunan.

Jadi bagaimana untuk menyemak sama ada tatasusunan ialah tatasusunan satu dimensi atau tatasusunan berbilang dimensi? Beberapa kaedah penghakiman akan diperkenalkan di bawah.

1. Gunakan rekursi gelung untuk menentukan

Menggunakan rekursi gelung ialah kaedah biasa untuk menyemak dimensi tatasusunan. Anda boleh menulis fungsi rekursif yang berulang pada tatasusunan dan memanggil fungsi yang sama secara rekursif apabila tatasusunan bersarang ditemui. Apabila elemen bukan tatasusunan ditemui, tahap semasa yang dilalui dikembalikan. Contohnya:

function getArrayDepth($array){
$max_depth = 1;
foreach($array as $value){
if(is_array($value)){
$depth = getArrayDepth($value) + 1;
if($depth > $max_depth){
$max_depth = $depth;
}
}
}
return $max_depth;
}

Contoh penggunaan:

$array1 = [1, 2, 3];
$array2 = [1, [2, 3]];
$array3 = [1, [2, [3]]];
echo getArrayDepth($array1); // 输出1
echo getArrayDepth($array2); // 输出2
echo getArrayDepth($array3); // 输出3

Kaedah ini merentasi tatasusunan secara rekursif dan memanggil fungsi yang sama secara rekursif apabila tatasusunan bersarang ditemui, akhirnya mengembalikan kedalaman maksimum tatasusunan.

2. Gunakan fungsi array_filter

Fungsi array_filter PHP boleh menapis elemen dalam tatasusunan mengikut fungsi panggil balik yang ditentukan dan mengembalikan elemen yang memenuhi syarat. Kita boleh menggunakan fungsi array_filter untuk menyemak sama ada tatasusunan mempunyai tatasusunan bersarang.

function isMultiDimensional($array){
return (count($array) !== count($array, COUNT_RECURSIVE));
}

Contoh penggunaan:

$array1 = [1, 2, 3];
$array2 = [1, [2, 3]];
$array3 = [1, [2, [3]]];
var_dump(isMultiDimensional($array1)); // 输出false
var_dump(isMultiDimensional($array2)); // 输出true
var_dump(isMultiDimensional($array3)); // 输出true

Kaedah ini menentukan sama ada terdapat tatasusunan bersarang dengan membandingkan sama ada jumlah bilangan elemen tatasusunan dan kiraan rekursi adalah sama. Jika mereka tidak sama, ia bermakna tatasusunan itu ialah tatasusunan berbilang dimensi.

3 Gunakan fungsi array_walk_recursive

Fungsi array_walk_recursive PHP boleh memanggil fungsi yang ditentukan pengguna untuk setiap elemen dalam tatasusunan. Kita boleh menggunakan ciri ini untuk menyemak sama ada tatasusunan mempunyai tatasusunan bersarang.

function isMultiDimensional($array){
$result = false;
$callback = function($value) use (&$result){
if(is_array($value)){
$result = true;
}
};
array_walk_recursive($array, $callback);
return $result;
}

Contoh penggunaan:

$array1 = [1, 2, 3];
$array2 = [1, [2, 3]];
$array3 = [1, [2, [3]]];
var_dump(isMultiDimensional($array1)); // 输出false
var_dump(isMultiDimensional($array2)); // 输出true
var_dump(isMultiDimensional($array3)); // 输出true

Kaedah ini menggunakan fungsi array_walk_recursive untuk melintasi setiap elemen dalam tatasusunan Apabila menemui tatasusunan bersarang, ia menetapkan bit bendera kepada benar, dan akhirnya mengembalikan nilai bit bendera.

Di atas ialah tiga cara biasa untuk menyemak sama ada tatasusunan ialah tatasusunan satu dimensi atau tatasusunan berbilang dimensi. Pilih kaedah yang sesuai mengikut keperluan sebenar agar lebih fleksibel dan cekap semasa memproses operasi tatasusunan.

Atas ialah kandungan terperinci Bagaimana untuk menyemak dimensi tatasusunan 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