上午在做一个php项目时,碰着了一个工具与数组之间彼此转换的问题,就随手写了两个关于工具转数组,数组转工具的自界说函数,记录一下,分享有需要的童鞋。
php 数组转工具的函数函数代码:
<?php function arr_to_obj($arr){ $obj = null; if (is_array($arr)) { $obj = new StdClass(); foreach ($arr as $key => $a){ $obj->$key = $a; } } if (is_object($arr)){ $obj = $arr; } return $obj; } ?>函数挪用要领:
<?php //这是一个数组 $arr = array('name' => '小明','sex' => 16); $obj = arr_to_obj($arr); echo $obj->name; // 输出功效: 小明 ?>注:
stdClass类是一个没有成员变量也没有成员要领的类,它所有的把戏要领,父类、接口等在初始化时都被配置成NULL。由于在PHP中对付一个类我们无法动态的添加要领, 所以这个类只能用来处理惩罚动态属性,这也是我们一种常见的用法。
php 工具转数组的函数函数代码:
<?php function obj_to_arr($obj){ $array = array(); if (is_object($obj)){ foreach ($obj as $key => $a) { $array[$key] = $a; } } if(is_array($obj)){ $array = $obj; } return $array; } ?>函数挪用:
<?php //建设一个类,并添加工具 $obj = new StdClass(); $obj->Name = '飞鸟慕鱼博客'; $obj->Host = ''; $arr = obj_to_arr($obj); var_dump($arr); ?>输出功效:
array(2) { ["Name"]=> string(18) "飞鸟慕鱼博客" ["Host"]=> string(24) "" }增补说明:
is_object():用于检测变量是否是一个工具。
is_array():用于检测变量是否是一个数组
系统函数数组与工具的互转1、工具转数组
<?php $obj = new StdClass(); $obj->Name = '小红'; $obj->Sex = '16'; //这里开始转换 // json_encode() 函数的第二个参数true $arr = json_decode(json_encode($obj),true); var_dump($arr); ?>打印功效:
array(2) { ["Name"]=> string(6) "小红" ["Sex"]=> string(2) "16" }2、数组转工具
<?php $arr = array('id'=>1,'name'=>'aaa'); // json_encode() 函数的第二个参数未配置,默认为 false $obj = json_decode(json_encode($arr)); var_dump($obj); ?>打印功效:
object(stdClass)#3 (2) { ["id"]=> int(1) ["name"]=> string(3) "aaa" }php 数组与工具互转的其它要领<?php /** * 数组 TO 工具 * 飞鸟慕鱼博客 * @param array $arr 数组 * @return object */ function arrayToObject($arr) { if (gettype($arr) != 'array') { return; } foreach ($arr as $k => $v) { if (gettype($v) == 'array' || getType($v) == 'object') { $arr[$k] = (object)arrayToObject($v); } } return (object)$arr; } /** * 工具 TO 数组 * 飞鸟慕鱼博客 * @param object $obj 工具 * @return array */ function objectToArray($obj) { $obj = (array)$obj; foreach ($obj as $k => $v) { if (gettype($v) == 'resource') { return; } if (gettype($v) == 'object' || gettype($v) == 'array') { $obj[$k] = (array)objectToArray($v); } } return $obj; } ?>