PHP / MySQL formatinng: veri bu tip nasıl kullanıldığı bir örnek?

2 Cevap php

Garip / belirsiz söz :) tür için şimdiden özür dilerim. Şimdi çeşitli vesilelerle MySQL veritabanlarında depolanan biçimlendirme bu tür geldim ve ben verilerin nasıl kullanıldığını merak ediyorum? Örneğin, bu kod satırı bb_message eklentisi bbPress forumları oldu.

a:8:{s:9:"max_inbox";i:50;s:13:"auto_add_link";b:1;s:9:"email_new";b:1;s:11:"email_reply";b:1;s:9: "email_add";b:1;s:13:"email_message";b:0;s:16:"threads_per_page";i:0;s:7:"version";s:3:"1.0";}

Ne karakterler ve harfler var? Örneğin ben s tahmin ediyorum: 9: "max_inbox" dokuz karakter bir dize gelir ve dize max_inbox olduğunu. Ama nasıl bu veri PHP ile manipüle (ve neden ler olacaktır: 9 gerekli) onun veritabanından çekilen alıyorsunuz?

Tüm teşekkürler!

2 Cevap

Böyle dizeleri çözmek için PHP'nin unserialize işlevini kullanın.

unserialize PHP docs

Bu dize şöyle bu diziye çözer:

php > $f='a:8:{s:9:"max_inbox";i:50;s:13:"auto_add_link";b:1;s:9:"email_new";b:1;s:11:"email_reply";b:1;s:9:"email_add";b:1;s:13:"email_message";b:0;s:16:"threads_per_page";i:0;s:7:"version";s:3:"1.0";}';
php > var_dump(unserialize($f));
array(8) {
["max_inbox"]=>
int(50)
["auto_add_link"]=>
bool(true)
["email_new"]=>
bool(true)
["email_reply"]=>
bool(true)
["email_add"]=>
bool(true)
["email_message"]=>
bool(false)
["threads_per_page"]=>
int(0)
["version"]=>
string(3) "1.0"
}

Bu gibi verileri saklamak için nedeni bir veritabanı alanında birden çok parametre saklayabilirsiniz olmasıdır.

Tefrika diziler saklanması sizin veritabanı şeması hakkında endişelenmeyin sağlar. Friendfeed Örneğin MySQL ile yapar, ve aynı zamanda MongoDB gibi 'NoSQL' depolama sistemlerinin tarzı benzer. Ben PHP serialize üzerinde JSON kullanmayı tercih, kendimi.

Ben bu PHP'nin serialize fonksiyonu tarafından oluşturulan bir dize olduğuna inanıyorum. Bu işlev bir dizge olarak (karmaşık) bir nesne ya da dizi temsil etmenizi sağlar.

Ayrıca ben ona geri dize kolay ilgili bölümleri bulunuyor (ki burada uygun bir terim ise emin değilim) atıfta olan sayılar muhtemelen tokenizing yapmak için gerekli olduğunu düşünüyorum. Bunu çok düşündüm verilen kalmadan, ben tokenizer sınırlayıcılarınıda içeren tefrika nesnenin gerçek değerleri üzerinde şok olabilir nereye durumları aşmak içindir tahmin (:; ").