草庐IT

SERIALIZATION

全部标签

Php 使用 unserialize() 和 serialize() 更改已保存文件中的值

我有一个保存到文件的序列化值数组,需要更改其中一个变量的值。在示例中,我更改了$two的值,然后使用新值将整个数组保存回文件中。是否有一种更有效的方法可以仅更改单个值而无需读取和写入整个文件/数组。$data=file_get_contents('./userInfo');$data=unserialize($data);extract($data);$two="thisisaalteredvalue";$userData=array('one'=>$one,'two'=>$two,'three'=>$three);$file=fopen("../userInfo",'w');fwri

php - 将 JSON 解码为 Symfony 实体

除了编写自定义脚本将JSON对象解码为PHP实体之外,有谁知道是否有简单的方法?我正在使用下面的脚本编码为JSON,但是当我解码时它是一个数组而不是一个实体。$serializer=newSerializer(array(newGetSetMethodNormalizer()),array('json'=>newJsonEncoder()));$json=$serializer->serialize($coupon,'json');$session->set('json',$json);然后我就这样解码$session=$this->getRequest()->getSession()

php - FOSRestBundle 序列化程序错误

我在使用FOSRestBundle时遇到错误。Fatalerror:Class'JMS\Serializer\SerializationContext'notfoundin/home/a15net/public_html/kavuklar/vendor/friendsofsymfony/rest-bundle/FOS/RestBundle/View/ViewHandler.phponline209它在composer.phar更新之前工作。你知道为什么我会收到这个错误吗? 最佳答案 我遇到了同样的问题。我通过阅读theFOSRest

php - 为什么 PHP 中的反序列化总是返回 false?

我刚刚写了世界上最简单的脚本,但我仍然无法让它工作,这很奇怪。我想使用jQuery捕获一些输入字段值并使用jQuery的serialize()将它们序列化。然后我将序列化的字符串发送到服务器以反序列化它。这是我在jQuery中序列化得到的输出,这是我发送到服务器的内容。field1=value1&field2=value2&field3=value3这是函数,publicfunctionunserialize_input(){$str=$this->input->post("user_values");$unserialized=unserialize($str);var_dump($

php - 如何序列化在属性内部有闭包的对象?

如果我执行serialize($obj),我得到:Serializationof'Closure'isnotallowed有什么方法可以在序列化时忽略这些闭包吗?无论如何,当我反序列化字符串时我不需要它们(这些属性的值可以是null或其他)。我的类(class)看起来像这样:ClassNode{protected$attrs=array();}$attrs是一个关联数组,可以包含一些闭包元素,比如$attrs['validator']=function(){...} 最佳答案 很简单:你不能。闭包不可序列化。如果你想创建“类似的东西

PHP 更新序列化数据

我需要一些帮助来反序列化和更新数组值并重新序列化它们(使用php)。基本上我希望能够反序列化一个字符串,更新特定键的值(不丢失其他值)并重新序列化它。我已经搜索过,但似乎找不到可行的解决方案(或者我可能只是typhlotic)。我要更新的数组非常简单。它有一个键和一个值。array('key'=>'value','key2'=>'value2',)我目前有,但它不起作用。foreach(unserialize($serializedData)as$key=>$val){if($key=='key'){$serializedData[$key]='newValue';}}$updated

php - 检查字符串是否在 PHP 中序列化

我正在为我的应用程序构建Redis数据库的缓存层,我已经到了要处理数组的地步。我想知道是否有任何好的(高性能!)方法可以使用PHP控制要序列化或不序列化的字符串?非常感谢! 最佳答案 $array=@unserialize($string);if($array===false&&$string!=='b:0;'){//woops,thatdidn'tappeartobeanythingserialized}$string!=='b:0;'检查序列化字符串的值是否为false。如果此检查对您很重要,您可能需要修剪序列化字符串或以其他方

php - 我是否应该以及如何将我的用户对象保存到 session 中?

这是我的用户类的基本结构:classUser{private$_userId=NULL;private$_isAuthenticated=FALSE;private$_code=NULL;private$_pageLoads=1;private$_dbh=NULL;constSECRET='shhhhitsasecret';constPAGE_LOADS=5;constHALF_SECOND_MS=500000;function__construct(PDO$dbh){$this->_dbh=$dbh;}publicfunctionlogin($username,$password){

php - 序列化可通过 php 扩展访问的 c++ 类的问题

我编写了一个公开了许多类的C++库。我还使用zend编写了一个php扩展,作为c++库的包装器。我在正确序列化我的对象时遇到问题,例如,当我尝试将它们存储在$_SESSION中时。这是一个例子:structspider_object{zend_objectm_std;Spider::QGramTokenizer*m_pObject;};...zend_class_entry*spider_QGramTokenizer_ce;PHP_METHOD(spider_QGramTokenizer,__construct){longlQGramSize;if(zend_parse_paramet

php - 在php中,我取消了一个对象的属性,但是反序列化之后,属性又回来了,为什么?

我的PHP代码在这里:classtest{public$a='a';public$b='b';public$c='c';}$a=newtest();unset($a->a);$b=serialize($a);$c=unserialize($b);var_dump($a,$b,$c);为什么$c包含属性a? 最佳答案 unserialize创建并初始化该类的一个新实例(尽管它不调用构造函数),然后将序列化字符串中的任何属性值映射到顶部。因为您要完全取消设置该属性,所以没有一个值可以映射回默认值,因此它在您的新对象中保持设置状态。如果您