Menukar Rentetan Pasangan Nilai Kunci kepada Tatasusunan Bersekutu
Masalah:
Anda mempunyai rentetan diformatkan seperti "key1value1key2value2key3value3", dan anda mahu menukarnya menjadi tatasusunan bersekutu, di mana "key1" memetakan ke "value1", "key2" memetakan ke "value2", dan seterusnya.
Penyelesaian Menggunakan Ungkapan Biasa:
The penyelesaian terpantas dan paling mudah melibatkan penggunaan ungkapan biasa dan array_combine:
preg_match_all("/([^\\]+)\\([^\\]+)/", $string, $p); $array = array_combine($p[1], $p[2]);
regex ini mengenal pasti pasangan nilai kunci bersebelahan yang dipisahkan oleh garis miring ke belakang. Kumpulan yang ditangkap kemudian digabungkan menjadi tatasusunan menggunakan array_combine.
Menyesuaikan kepada Pembatas Berbeza:
Pendekatan ini boleh disesuaikan dengan mudah untuk mengendalikan nilai kunci yang berbeza dan pembatas pasangan . Contohnya:
# Key/value separated by colons, pair by commas preg_match_all("/([^:]+):([^,]+)/", $string, $p); $array = array_combine($p[1], $p[2]);
Membenarkan Mempelbagaikan Pembatas:
Untuk membenarkan pembatas berbeza dalam satu rentetan, regex yang lebih fleksibel boleh digunakan:
preg_match_all("/([^:=]+)[:=]+([^,+&]+)/x", $string, $p);
Lain-lain Pendekatan:
parse_str() dengan Penggantian Rentetan:
Jika rentetan input sudah mengikut format key=value&key2=value2, anda boleh menggunakan parse_str:
parse_str(strtr($string, ":,", "=&"), $pairs);
Kunci/Nilai Manual Pemisahan:
Walaupun selalunya lebih panjang, anda juga boleh membuat tatasusunan secara manual menggunakan explode dan foreach:
$pairs = array_combine(explode("\", $string, 2, TRUE), explode("\", $string, 2, TRUE));
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Rentetan Pasangan Nilai Kunci kepada Tatasusunan Bersekutu dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!