我有一个类说,Foo有一个名为bar:

[PHP Fiddle Link]的json字符串属性

class Foo {

public $bar = '{"1455260079":"Tracking : #34567808765098767 USPS","1455260723":"Delivered","1455261541":"Received Back"}';

public function getBar(){

return (array) json_decode($this->bar);

}

public function remove($timestamp){

$newBar = $this->getBar();

print_r($newBar);

unset($newBar[$timestamp]);

print_r($newBar);

$this->bar = json_encode($newBar);

}

}

现在,要从bar中删除元素,我正在执行以下操作,我无法弄清楚它为什么不删除:

$foo = new Foo();

$foo->remove("1455261541");

echo $foo->bar;

打印出来:

Array

(

[1455260079] => Tracking : #34567808765098767 USPS

[1455260723] => Delivered

[1455261541] => Received Back

)

Array

(

[1455260079] => Tracking : #34567808765098767 USPS

[1455260723] => Delivered

[1455261541] => Received Back

)

{"1455260079":"Tracking : #34567808765098767 USPS","1455260723":"Delivered","1455261541":"Received Back"}

这背后的原因是什么?有帮助吗?

最佳答案 尝试下面的解决方案,我只是更改了getBar函数并在json_decode函数中添加了一个参数:

class Foo {

public $bar = '{"1455260079":"Tracking : #34567808765098767 USPS","1455260723":"Delivered","1455261541":"Received Back"}';

public function getBar(){

return json_decode($this->bar, true);

}

public function remove($timestamp){

$newBar = $this->getBar();

print_r($newBar);

unset($newBar[$timestamp]);

print_r($newBar);

$this->bar = json_encode($newBar);

}

}

$foo = new Foo();

$foo->remove("1455261541");

echo $foo->bar;

输出:

Array

(

[1455260079] => Tracking : #34567808765098767 USPS

[1455260723] => Delivered

[1455261541] => Received Back

)

Array

(

[1455260079] => Tracking : #34567808765098767 USPS

[1455260723] => Delivered

)

{"1455260079":"Tracking : #34567808765098767 USPS","1455260723":"Delivered"}

php unset方法,php – unset()在类方法中不起作用相关推荐

  1. php 有下划线的方法,编码风格 - PHP类方法中领先的下划线有什么用?

    编码风格 - PHP类方法中领先的下划线有什么用? 在查看各种PHP库时,我注意到很多人选择使用单个下划线为某些类方法添加前缀,例如 public function _foo() ...代替... p ...

  2. php unset方法,PHP中__unset()方法详解

    __unset(),当对不可访问属性调用unset()时被调用. 看这个方法之前呢,我们也先来看一下 unset() 函数,unset()这个函数的作用是删除指定的变量且传回true,参数为要删除的变 ...

  3. php unset函数_PHP | 使用unset()函数从数组中删除元素

    php unset函数 Given an array and we have to remove an element from the array. 给定一个数组,我们必须从数组中删除一个元素. u ...

  4. php函数unset,PHP unset函数 PHP unset函数原理及使用方法解析

    想了解PHP unset函数原理及使用方法解析的相关内容吗,小猿笔记在本文为您仔细讲解PHP unset函数的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:PHP,unset函数,下面大家 ...

  5. Cmake入门之——Unset方法(七)

    一 概述 set方法用于给变量设置值,同理,unset方法用于给变量清空值,其中变量的取值为以下三种: 一般变量(Normal Variable) 缓存变量(Cache Variable) 环境变量( ...

  6. python 类中方法总结 --- 实例方法、类方法、静态方法

    在python的类语法中,可以出现三种方法,具体如下: (1)实例方法 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例 ...

  7. python cls方法_关于类方法中的cls

    在python的类方法中,默认使用的第一个参数是cls,而在实例方法中,一般使用self作为第一个参数. 两处比较: (1)比较一般类方法中的self和cls的区别:一般来说,使用某个类的方法,需要先 ...

  8. python类中方法调用自己类的方法_python 类中方法总结 --- 实例方法、类方法、静态方法...

    在python的类语法中,可以出现三种方法,具体如下: (1)实例方法 1)第一个参数必须是实例本身,一般使用[self]表示. 2)在实例方法中,可以通过[self]来操作实例属性,[类名]来操作类 ...

  9. python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用

    python类方法中使用:修饰符@staticmethod和@classmethod的作用与区别,还有装饰器@property的使用(3-20181205) 文章目录: 一. @staticmetho ...

最新文章

  1. html缩进两个空格,HTML缩进标准,制表符还是两个空格?
  2. 移动互联网长连接方案实例
  3. redis 怎么关闭写盘_Redis持久化策略
  4. Java内存模型和优化
  5. VNCserver在Fedora上配置过程
  6. elasticsearch实现远程索引复制
  7. 2008r2无线服务器,2008r2云服务器
  8. 批处理中的使用问题记录
  9. Luck Competition
  10. 大话机器学习之数据预处理与数据筛选
  11. 基于Docker布署伪分布式hadoop环境(一)
  12. 云计算大败局:基因与宿命
  13. python随机抽号_Python基础:手把手以实例教你学随机数产生和字符/ASCII码转换
  14. -lc++ 和 添加 libc++.tbd 居然是等价的
  15. 红外热成像仪原理及应用
  16. #STM32 LCD12864编程即原理介绍
  17. 金桔蓝牙LoRa主被动一体定位系统原理
  18. html万花筒图片轮播代码,jQuery实现可拖拽3D万花筒旋转特效
  19. IDE/SATA/SCSI接口
  20. 【ESP32】Arduino+LVGL 如何使用PSRAM优化显示

热门文章

  1. 马云演讲:从阿里巴巴退休后将要做三件事
  2. 霸屏天下模式源码升级版,为您提供更深度的解决方案!
  3. 问题来了、、挖掘机技术哪家强?问题又来了、、
  4. html table-cell用法,CSS中的table-cell属性使用实例教程
  5. 移动端的证件识别APP简介
  6. 15kw充电桩电源模块,三相电源模块电路图,仅供学习参考
  7. Github精品:全开源的协同OA办公开发项目,不要错过!
  8. python 销售数据分析输出表格_Python处理Excel数据实例--销售数据分析
  9. visio交叉线(跨线)去掉交叉点弯曲(弧形弯曲)的办法
  10. vue项目创建之后运行错误