Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Analisis ringkas beberapa kaedah menukar objek tidak teratur kepada tatasusunan

Analisis ringkas beberapa kaedah menukar objek tidak teratur kepada tatasusunan

PHPz
PHPzasal
2023-04-23 10:21:02369semak imbas

Dalam PHP, kadangkala kita perlu menukar objek kepada tatasusunan untuk memudahkan operasi data kita. Biasanya, jika nama atribut objek adalah sama dengan nilai kunci tatasusunan, kita boleh terus menggunakan fungsi objek-ke-tatasusunan, contohnya:

$array = (array) $obj; // $obj为对象,$array为数组

Walau bagaimanapun, jika atribut objek nama tidak teratur, seperti atribut Nama mengandungi garis bawah, sempang atau huruf besar, dsb. Pada masa ini, kita perlu memproses nama atribut secara manual dan menukarnya menjadi nama kunci tatasusunan sah. Di bawah ini kami memperkenalkan beberapa kaedah untuk menukar objek tidak teratur kepada tatasusunan.

Kaedah 1: Gunakan fungsi get_object_vars()

Fungsi get_object_vars() boleh digunakan untuk mendapatkan semua atribut dan nilai atribut objek dan mengembalikan tatasusunan bersekutu. Kita boleh menggunakan fungsi ini untuk mendapatkan senarai atribut objek dan kemudian memprosesnya.

$obj = new stdClass();
$obj->user_name = '张三';
$obj->user_age = 20;
$obj->{'user_city-name'} = '北京';

$arr = array();
$vars = get_object_vars($obj);
foreach($vars as $key => $value){
    $arr[str_replace('_', '-', $key)] = $value;
}

var_export($arr);

Dalam contoh di atas, kami menggunakan fungsi get_object_vars() untuk mendapatkan semua atribut dan nilai atribut objek, dan kemudian gunakan gelung foreach untuk melintasi dan menukar garis bawah dalam atribut nama kepada tanda sempang. Tatasusunan akhir yang ditukar adalah seperti berikut:

array (
  'user_name' => '张三',
  'user_age' => 20,
  'user-city-name' => '北京',
)

Perhatikan bahawa kaedah ini hanya memproses sifat objek dan tidak termasuk sifat yang diwarisi.

Kaedah 2: Gunakan fungsi json_encode() dan json_decode()

Kami juga boleh menggunakan fungsi json_encode() dan json_decode() untuk menukar objek kepada JSON format, dan kemudian Gunakan fungsi json_decode() untuk menukar format JSON kembali kepada tatasusunan.

$obj = new stdClass();
$obj->user_name = '张三';
$obj->user_age = 20;
$obj->{'user_city-name'} = '北京';

$json_str = json_encode($obj);
$arr = json_decode($json_str, true);

foreach($arr as $key => $value){
    $new_key = str_replace('_', '-', $key);
    unset($arr[$key]);
    $arr[$new_key] = $value;
}

var_export($arr);

Dalam contoh di atas, kami menggunakan fungsi json_encode() untuk menukar objek kepada format JSON, dan kemudian menggunakan fungsi json_decode() untuk menukar format JSON kembali kepada tatasusunan. Kemudian gunakan gelung foreach untuk melintasi tatasusunan dan menukar garis bawah dalam nama atribut kepada tanda sempang. Tatasusunan akhir yang ditukar adalah sama dengan kaedah satu.

Kaedah 3: Gunakan fungsi array_map()

Fungsi array_map() boleh menggunakan fungsi panggil balik pada setiap elemen dalam tatasusunan dan mengembalikan tatasusunan baharu. Kita boleh menggunakan fungsi ini untuk menukar garis bawah dalam nama sifat kepada tanda sempang.

$obj = new stdClass();
$obj->user_name = '张三';
$obj->user_age = 20;
$obj->{'user_city-name'} = '北京';

$arr = (array) $obj;
$arr = array_map(function($key){
    return str_replace('_', '-', $key);
}, array_keys($arr));
$arr = array_combine($arr, (array) $obj);

var_export($arr);

Dalam contoh di atas, kami menggunakan fungsi array_map untuk menukar garis bawah dalam nama atribut kepada tanda sempang, gunakan fungsi array_keys() untuk mendapatkan senarai atribut objek, dan kemudian gunakan array_combine() berfungsi untuk menggabungkan nama atribut dengan Nilai atribut ditukar kepada tatasusunan. Tatasusunan yang ditukar terakhir adalah sama dengan kaedah satu dan kaedah dua.

Ringkasan:

Apabila kita perlu menukar objek kepada tatasusunan dan menemui nama atribut yang tidak teratur, kita boleh menggunakan get_object_vars(), json_encode(), array_map() dan fungsi lain untuk memprosesnya . Melalui kaedah ini, kami boleh menukar objek tidak teratur dengan mudah kepada tatasusunan biasa untuk memudahkan operasi data kami.

Atas ialah kandungan terperinci Analisis ringkas beberapa kaedah menukar objek tidak teratur kepada tatasusunan. 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