Masalah saya sangat mendasar.
Saya tidak menemukan contoh untuk memenuhi kebutuhan saya seperti apa sebenarnya serialize()
dan unserialize()
maksudnya di php? Mereka hanya memberikan contoh - membuat serial array dan menampilkan output dalam format yang tidak dapat dijelaskan. Sangat sulit untuk memahami konsep dasar melalui jargon mereka.
EDIT:
<?php
$a= array( '1' => 'elem 1', '2'=> 'elem 2', '3'=>' elem 3');
print_r($a);
echo ("<br></br>");
$b=serialize($a);
print_r($b);
?>
keluaran:
Array ( [1] => elem 1 [2] => elem 2 [3] => elem 3 )
a:3:{i:1;s:6:"elem 1";i:2;s:6:"elem 2";i:3;s:7:" elem 3";}
Saya tidak dapat memahami hasil kedua. Selain itu, adakah yang bisa memberikan contoh situasi yang saya perlukan untuk membuat serial array php sebelum menggunakannya?
Jawaban:
Array atau objek PHP atau struktur data kompleks lainnya tidak dapat dipindahkan atau disimpan atau digunakan di luar skrip PHP yang sedang berjalan . Jika Anda ingin mempertahankan struktur data yang kompleks di luar satu skrip yang dijalankan, Anda perlu membuat serialnya . Itu hanya berarti meletakkan struktur ke dalam "penyebut umum yang lebih rendah" yang dapat ditangani oleh hal-hal selain PHP, seperti database, file teks, soket. Fungsi PHP standar
serialize
hanyalah format untuk mengekspresikan hal seperti itu, ia membuat struktur data menjadi representasi string yang unik untuk PHP dan dapat dibalik menjadi objek PHP menggunakanunserialize
. Ada banyak format lain, seperti JSON atau XML.Ambil contoh masalah umum ini:
Bagaimana cara meneruskan array PHP ke Javascript?
PHP dan Javascript hanya dapat berkomunikasi melalui string. Anda dapat meneruskan string
"foo"
dengan sangat mudah ke Javascript. Anda dapat memberikan nomor tersebut1
dengan sangat mudah ke Javascript. Anda dapat meneruskan nilai booleantrue
danfalse
dengan mudah ke Javascript. Tapi bagaimana Anda meneruskan array ini ke Javascript?Jawabannya adalah serialisasi . Dalam kasus PHP / Javascript, JSON sebenarnya adalah format serialisasi yang lebih baik:
Javascript dapat dengan mudah membalikkan ini menjadi array Javascript yang sebenarnya.
Ini sama validnya dengan representasi dari struktur data yang sama:
Tetapi cukup banyak hanya PHP yang menggunakannya, ada sedikit dukungan untuk format ini di tempat lain.
Ini sangat umum dan juga didukung dengan baik:
Ada banyak situasi di mana Anda perlu meneruskan struktur data kompleks sebagai string. Serialisasi, merepresentasikan struktur data arbitrer sebagai string, memecahkan cara melakukannya.
sumber
i:1
= integer 1,s:6:"elem 1"
= string dengan 6 karakter "elem 1" ... Dan contoh apa yang Anda minta, saya pikir saya berikan satu?echo json_encode($array);
Bagaimana tepatnya Anda lulus tergantung pada keadaan. Jangan terlalu terpaku pada itu.Penggunaan PHP serialize () unserialize ()
http://freeonlinetools24.com/serialize
Yang memberi Anda keluaran seperti ini
sekali lagi jika Anda ingin mendapatkan kembali array asli cukup gunakan fungsi PHP unserialize ()
Saya harap ini akan membantu
sumber
Ketika Anda ingin membuat nilai php Anda dapat disimpan, Anda harus mengubahnya menjadi nilai string, itulah yang dilakukan serialize () . Dan unserialize () melakukan hal sebaliknya.
sumber
serialize()
danunserialize()
dibuat.Jalankan program ini dengan output echo
di sini
a = ukuran larik
i = jumlah bilangan larik
s = ukuran nilai larik
Anda dapat menggunakan serialize untuk menyimpan array data dalam database
dan dapat mengambil dan UN-serialize data untuk digunakan.
sumber
Sebagian besar media penyimpanan dapat menyimpan jenis string . Mereka tidak dapat secara langsung menyimpan struktur data PHP seperti array atau objek, dan mereka tidak boleh, karena itu akan memasangkan media penyimpanan data dengan PHP.
Sebaliknya,
serialize()
memungkinkan Anda untuk menyimpan salah satu dari struct ini sebagai string. Ini dapat dide-serialisasi dari representasi stringnya denganunserialize()
.Jika Anda sudah familiar dengan
json_encode()
danjson_decode()
(dan JSON secara umum), konsepnya serupa.sumber
serialize()
dulu dari JSON.Silahkan! silahkan! silahkan! JANGAN membuat serial data dan menempatkannya ke dalam database Anda. Serialize dapat digunakan seperti itu, tetapi itu kehilangan inti dari database relasional dan tipe data yang melekat di mesin database Anda. Melakukan hal ini membuat data di database Anda menjadi non-portabel, sulit dibaca, dan dapat mempersulit kueri. Jika Anda ingin aplikasi Anda portabel ke bahasa lain, seperti katakanlah Anda ingin menggunakan Java untuk beberapa bagian dari aplikasi Anda yang masuk akal untuk menggunakan Java, serialisasi akan menjadi masalah di pantat. Anda harus selalu dapat membuat kueri dan mengubah data dalam database tanpa menggunakan alat perantara pihak ketiga untuk memanipulasi data yang akan disisipkan.
itu membuat sangat sulit untuk memelihara kode, kode dengan masalah portabilitas, dan data yang lebih sulit untuk bermigrasi ke sistem RDMS lain, skema baru, dll. Ini juga memiliki kerugian tambahan yaitu membuatnya berantakan untuk mencari database Anda berdasarkan salah satu bidang yang Anda serialisasi.
Itu tidak berarti serialize () tidak berguna. Ini bukan ... Tempat yang baik untuk menggunakannya mungkin file cache yang berisi hasil dari operasi intensif data, misalnya. Ada banyak lagi ... Hanya saja jangan menyalahgunakan serialisasi karena orang berikutnya yang datang akan mengalami mimpi buruk pemeliharaan atau migrasi.
Contoh yang baik dari serialize () dan unserialize () bisa seperti ini:
Batalkan serial di halaman
sumber
Dari http://php.net/manual/en/function.serialize.php :
Pada dasarnya, ini mengambil array atau objek php dan mengubahnya menjadi string (yang kemudian dapat Anda kirimkan atau simpan sesuai keinginan Anda).
Unserialize digunakan untuk mengubah string kembali menjadi objek.
sumber
Pada dasarnya, ketika Anda membuat serial array atau objek, Anda cukup mengubahnya menjadi format string yang valid sehingga Anda dapat dengan mudah menyimpannya di luar skrip php.
Catatan untuk objek Anda harus menggunakan metode __sleep dan __wakeup ajaib. __sleep dipanggil oleh serialize (). Metode sleep akan mengembalikan array nilai dari objek yang ingin Anda pertahankan.
__wakeup dipanggil oleh unserialize (). Metode bangun harus mengambil nilai-nilai yang tidak berseri dan menginisialisasinya di dalamnya dalam objek.
Untuk melewatkan data antara php dan js Anda akan menggunakan json_encode untuk mengubah array php menjadi format json yang valid. Atau sebaliknya - gunakan JSON.parese () untuk mengubah data keluaran (string) menjadi objek json yang valid. Anda ingin melakukannya untuk memanfaatkan penyimpanan lokal. (akses data offline)
sumber
Ya saya bisa. Asumsikan kita perlu melacak sistem Anda berarti Dalam sistem Anda memiliki lebih dari satu admin dan subadmin, Semua ini dapat memasukkan atau memperbarui atau mengedit informasi apa pun. Nanti Anda perlu tahu siapa yang membuat perubahan ini. Untuk mengatasi masalah ini, Anda perlu membuat serial.
Saya harap ini akan membantu Anda.
sumber
sumber