PHP数组对象与Json转换操作实例分析


Posted in PHP onOctober 22, 2019

本文实例讲述了PHP数组对象与Json转换操作。分享给大家供大家参考,具体如下:

代码

<?php
//数组转对象
function arrayToObject($e){
  if( gettype($e)!='array' ) return;
  foreach($e as $k=>$v){
    if( gettype($v)=='array' || getType($v)=='object' )
      $e[$k]=(object)arrayToObject($v);
  }
  return (object)$e;
}
//对象转数组
function objectToArray($e){
  $e=(array)$e;
  foreach($e as $k=>$v){
    if( gettype($v)=='resource' ) return;
    if( gettype($v)=='object' || gettype($v)=='array' )
      $e[$k]=(array)objectToArray($v);
  }
  return $e;
}
//对象转数组
function object_array($array){
  if(is_object($array)){
    $array = (array)$array;
  }
  if(is_array($array)){
    foreach($array as $key=>$value){
      $array[$key] = object_array($value);
    }
  }
  return $array;
}
//json到数组
function simple_json_parser($json){
  $json = str_replace("{","",str_replace("}","", $json));
  $jsonValue = explode(",", $json);
  $arr = array();
  foreach($jsonValue as $v){
    $jValue = explode(":", $v);
    $arr[str_replace('"',"", $jValue[0])] = (str_replace('"', "", $jValue[1]));
  }
  return $arr;
}
echo "<br>-------------------------------<br>";
echo "现在的数组<br><br>";
$arr=array(
  "name"=>"李小龙",
  "tel"=>"11111111111",
  "age"=>"12",
);
var_dump($arr);
echo "<br>-------------------------------<br>";
echo "<br><br>数组转对象<br><br>";
$obj= arrayToObject($arr);
var_dump($obj);
echo "<br><br>输出对象属性<br><br>";
var_dump($obj->name);
echo "<br>-------------------------------<br>";
echo "<br><br>对象转数组<br><br>";
$arr=object_array($obj);
var_dump($arr);
echo "<br><br>输出数组数值<br><br>";
var_dump($arr["name"]);
echo "<br>-------------------------------<br>";
echo "<br><br>Json到数组<br><br>";
$json ='{"a":"哈哈","b":"我","c":"数","d":"一","e":3,"f":2,"g":1,"h":"别生气了"}';
$arr=simple_json_parser($json);
var_dump($arr);
echo "<br>官方换种方法<br>";
echo "对象<br>";
var_dump(json_decode($json));
$a=json_decode($json);
echo "<br>属性:";
echo $a->a;
echo "<br>数组<br>";
var_dump(json_decode($json,true));
echo "<br>-------------------------------<br>";
echo "<br><br>数组到Json<br><br>";
var_dump($arr);
echo "<br>";
var_dump(json_encode($json, JSON_HEX_APOS));

输出

-------------------------------
现在的数组
array(3) { ["name"]=> string(9) "李小龙" ["tel"]=> string(11) "11111111111" ["age"]=> string(2) "12" }
-------------------------------
数组转对象
object(stdClass)#1 (3) { ["name"]=> string(9) "李小龙" ["tel"]=> string(11) "11111111111" ["age"]=> string(2) "12" }
输出对象属性
string(9) "李小龙"
-------------------------------
对象转数组
array(3) { ["name"]=> string(9) "李小龙" ["tel"]=> string(11) "11111111111" ["age"]=> string(2) "12" }
输出数组数值
string(9) "李小龙"
-------------------------------
Json到数组
array(8) { ["a"]=> string(6) "哈哈" ["b"]=> string(3) "我" ["c"]=> string(3) "数" ["d"]=> string(3) "一" ["e"]=> string(1) "3" ["f"]=> string(1) "2" ["g"]=> string(1) "1" ["h"]=> string(12) "别生气了" }
官方换种方法
对象
object(stdClass)#2 (8) { ["a"]=> string(6) "哈哈" ["b"]=> string(3) "我" ["c"]=> string(3) "数" ["d"]=> string(3) "一" ["e"]=> int(3) ["f"]=> int(2) ["g"]=> int(1) ["h"]=> string(12) "别生气了" }
属性:哈哈
数组
array(8) { ["a"]=> string(6) "哈哈" ["b"]=> string(3) "我" ["c"]=> string(3) "数" ["d"]=> string(3) "一" ["e"]=> int(3) ["f"]=> int(2) ["g"]=> int(1) ["h"]=> string(12) "别生气了" }
-------------------------------
数组到Json
array(8) { ["a"]=> string(6) "哈哈" ["b"]=> string(3) "我" ["c"]=> string(3) "数" ["d"]=> string(3) "一" ["e"]=> string(1) "3" ["f"]=> string(1) "2" ["g"]=> string(1) "1" ["h"]=> string(12) "别生气了" }
string(136) ""{\"a\":\"\u54c8\u54c8\",\"b\":\"\u6211\",\"c\":\"\u6570\",\"d\":\"\u4e00\",\"e\":3,\"f\":2,\"g\":1,\"h\":\"\u522b\u751f\u6c14\u4e86\"}""

PHP 相关文章推荐
模拟OICQ的实现思路和核心程序(一)
Oct 09 PHP
一个好用的分页函数
Nov 16 PHP
PHP伪静态页面函数附使用方法
Jun 20 PHP
php下载远程文件类(支持断点续传)
Nov 14 PHP
Zend的MVC机制使用分析(一)
May 02 PHP
thinkphp的c方法使用示例
Feb 24 PHP
微信公众平台开发之天气预报功能
Aug 31 PHP
Zend Framework动作助手Url用法详解
Mar 05 PHP
mysql查找删除重复数据并只保留一条实例详解
Sep 24 PHP
yii插入数据库防并发的简单代码
May 27 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
Aug 11 PHP
基于PHP实现解密或加密Cloudflar邮箱保护
Jun 24 PHP
Yii框架where查询用法实例分析
Oct 22 #PHP
Laravel手动返回错误码示例
Oct 22 #PHP
Laravel 6.2 中添加了可调用容器对象的方法
Oct 22 #PHP
浅谈Laravel模板实体转义带来的坑
Oct 22 #PHP
Laravel定时任务的每秒执行代码
Oct 22 #PHP
Laravel框架实现定时Task Scheduling例子
Oct 22 #PHP
laravel 解决强制跳转 https的问题
Oct 22 #PHP
You might like
php去掉字符串的最后一个字符附substr()的用法
2011/03/23 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
理解JSON:3分钟课程
2011/10/28 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
jquery 表格排序、实时搜索表格内容(附图)
2014/05/19 Javascript
JavaScript更改字符串的大小写
2015/05/07 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
谈一谈bootstrap响应式布局
2016/05/23 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
javascript简易画板开发
2020/04/12 Javascript
基于Vue2的移动端开发环境搭建详解
2016/11/03 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
html5+CSS 实现禁止IOS长按复制粘贴功能
2016/12/28 Javascript
javascript  数组排序与对象排序的实例
2017/07/17 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
2017/10/31 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
[04:29]2016国际邀请赛中国区预选赛Ehome战队教练采访
2016/06/27 DOTA
[57:41]Secret vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
python字符串过滤性能比较5种方法
2017/06/22 Python
python3+PyQt5使用数据库窗口视图
2018/04/24 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
python实现证件照换底功能
2019/08/20 Python
Python 日期的转换及计算的具体使用详解
2020/01/16 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
PHP如何设置和取得Cookie值
2015/06/30 面试题
介绍一下grep命令的使用
2012/06/28 面试题
平面设计专业大学生职业规划书
2014/03/12 职场文书
2014年重阳节敬老活动方案
2014/09/16 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
浅谈Redis缓冲区机制
2022/06/05 Redis