Tanpa sebelumnya , bagaimana saya bisa mengubah array seperti ini
array("item1"=>"object1", "item2"=>"object2",......."item-n"=>"object-n");
ke string seperti ini
item1='object1', item2='object2',.... item-n='object-n'
Saya sudah memikirkannya implode()
, tetapi tidak meledak kunci dengan itu.
Jika foreach itu perlu, mungkinkah untuk tidak menyusun foreach?
EDIT: Saya telah mengubah string
EDIT2 / UPDATE: Pertanyaan ini ditanyakan beberapa waktu yang lalu. Pada saat itu, saya ingin menulis semuanya dalam satu baris jadi saya akan menggunakan operator terner dan panggilan fungsi bawaan nest untuk mendukung foreach. Itu bukan praktik yang baik! Menulis kode yang mudah dibaca, ringkas atau tidak, tidak terlalu penting.
Dalam hal ini: menempatkan foreach dalam suatu fungsi akan jauh lebih mudah dibaca dan modular daripada menulis satu baris (Meskipun semua jawabannya bagus!).
Jawaban:
dan cara lain:
atau:
sumber
echo "Hello, World!";
Haruskah saya melihat contoh kode dari fungsi-fungsi itu?array_fill(0, $input, 'selected-value-you want-to-check-against');
Ini akan menghasilkan larik ukuran yang sama dengan nilai tunggal untuk semua baris.Anda bisa menggunakan http_build_query , seperti ini:
Keluaran:
Demo
sumber
http_build_query
.http_build_query
diurldecode
untuk menghindarinya.Saya menghabiskan pengukuran (100000 iterasi), cara tercepat apa untuk merekatkan array asosiatif?
Tujuan: Untuk mendapatkan baris yang terdiri dari 1.000 item, dalam format ini: "key: value, key2: value2"
Kami memiliki array (misalnya):
Tes nomor satu:
Gunakan http_build_query dan str_replace :
Rata-rata waktu untuk meledakkan 1000 elemen: 0,00012930955084904
Tes nomor dua:
Gunakan array_map dan implode :
Rata-rata waktu untuk meledakkan 1000 elemen: 0,0004890081976675
Tes nomor tiga:
Gunakan array_walk dan implode :
Rata-rata waktu untuk meledakkan 1000 elemen: 0,0003874126245348
Tes nomor empat:
Gunakan foreach :
Rata-rata waktu untuk meledakkan 1000 elemen: 0,00026632803902445
Saya dapat menyimpulkan bahwa cara terbaik untuk merekatkan array - gunakan http_build_query dan str_replace
sumber
$s = ''; foreach ($array as $k=>$v) { if ($s !== null) { $s .= ','; } $s .= "{$k}:{$v}"; }
mengungguli yang lain.substr(str_replace('"', '', json_encode($headers)), 1, -1);
http_build_query
menggantikan ruang dengan ditambah (+
) karakter.Saya akan menggunakan
serialize()
ataujson_encode()
.Meskipun tidak akan memberikan string hasil persis seperti yang Anda inginkan, akan lebih mudah untuk menyandikan / menyimpan / mengambil / mendekode nanti.
sumber
Menggunakan array_walk
IDEONE
sumber
create_function
daripada hanya menggunakan fungsi anonim?Perubahan
jika Anda ingin menghidupkan kembali seluruh String tanpa lem $ terakhir
Dan penggunaannya:
sumber
Untuk tujuan debugging. Menulis berulang larik larik bersarang ke string. Digunakan untuk masing-masing. Fungsi menyimpan karakter Bahasa Nasional.
sumber
Anda juga bisa menggunakan array_reduce PHP ,
sumber
Untuk membuat mysql dimana kondisi dari array
sumber
Ada juga var_export dan print_r yang lebih umum dikenal untuk mencetak keluaran debug tetapi kedua fungsi tersebut dapat menggunakan argumen opsional untuk mengembalikan string.
Menggunakan contoh pertanyaan sebagai data.
Menggunakan
print_r
untuk mengubah array menjadi stringIni akan menghasilkan representasi variabel yang dapat dibaca manusia.
Akan menghasilkan:
Menggunakan
var_export
untuk mengubah array menjadi stringYang akan menampilkan representasi string php dari variabel.
Akan menghasilkan:
Karena itu php valid kita bisa mengevaluasinya.
Keluaran:
sumber
Berikut adalah contoh sederhana, menggunakan class:
sumber