php简单对象与数组的转换函数代码,php数组与对

作者: 计算机网络  发布:2019-09-26

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 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;
}

关于数组转变为指标,在phpx有拜会部分帖子斟酌

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;
}

$andy = array();
$andy['a'] = 1;
$andy['b'] = 2;
$andy['c'] = 3;

上边的内容来自 cnblogs jaiho
php多层数组和指标的转移
多层数组和指标转化的用处很轻巧,便于管理WebService中多层数组和目的的转会
简易的(array)和(object)只可以管理单层的数目,对于多层的数组和对象调换则不能。
通过json_decode(json_encode($object)能够将目的二回性转换为数组,可是object中遇见非utf-8编码的非ascii字符则会出现难点,比方gbk的华语,而且json_encode和decode的性情也值得存疑。

把andy强制转变为数组,如同援用的造福些了,重要是成为了->

下边上代码:

$andy = array();
$andy = (object)$andy;
$andy->a = 1;
$andy->b = 2;
$andy->c = 3;

复制代码 代码如下:

还嫌它麻烦,再用StdClass

<?php

$andy = new StdClass;
$andy->a = 1;
$andy->b = 2;
$andy->c = 3;

function objectToArray($d) {
if (is_object($d)) {
// Gets the properties of the given object
// with get_object_vars function
$d = get_object_vars($d);
}

stdClass 是PHP的贰个基类,全部的类大致都一连那么些类,所以任什么日期候都足以被new,能够

if (is_array($d)) {
/*
* Return array converted to object
* Using __FUNCTION__ (Magic constant)
* for recursive call
*/
return array_map(__FUNCTION__, $d);
}
else {
// Return array
return $d;
}
}

让这几个变量成为贰个object。同不时间,那几个基类又有三个独特的地点, 正是没办法。在此地

function arrayToObject($d) {
if (is_array($d)) {
/*
* Return array converted to object
* Using __FUNCTION__ (Magic constant)
* for recursive call
*/
return (object) array_map(__FUNCTION__, $d);
}
else {
// Return object
return $d;
}
}

再有点是指标和数组能源消耗的难点:PHP5的对象的独个性,对象在其他地方被调用,都

// Useage:
// Create new stdClass Object
$init = new stdClass;
// Add some test data
$init->foo = "Test data";
$init->bar = new stdClass;
$init->bar->baaz = "Testing";
$init->bar->fooz = new stdClass;
$init->bar->fooz->baz = "Testing again";
$init->foox = "Just test";

是引用地址型的,所以绝对消耗的财富会少一 点。在别的页面为它赋值时是直接修改,而不

// Convert array to object and then object back to array
$array = objectToArray($init);
$object = arrayToObject($array);

是引用二个拷贝。数组在程序的选拔中应当是最便利的,但是数组的每趟被引用($a = $b)

// Print objects and array
print_r($init);
echo "n";
print_r($array);
echo "n";
print_r($object);
?>

,其实都是创设了贰个副本,况兼,数组被unset后,依旧占用了内部存款和储蓄器(未有测量试验过)。还应该有

你恐怕感兴趣的篇章:

  • PHP 数组和字符串相互转变实现情势
  • php完毕将数组转换为XML的不二等秘书籍
  • 剖析PHP将对象转变到数组的法子(包容多维数组类型)
  • php二维数组转成字符串示例
  • php的数组与字符串的转换函数整理汇总
  • PHP中校数组转成XML格式的落到实处代码
  • php中校数组转成字符串并保存到数据库中的函数代码
  • PHP编码调换函数 自动调换字符集帮助数组转变
  • PHP对象转变为数组函数(递归方法)
  • PHP中把对象数组转变来普通数组的不二秘籍
  • PHP实现数组递归转义的法子
  • php完毕数组纵向转横向并过滤重复值的点子深入分析

三个函数arrayobject,能够一直将数组转化为 对象那也是三个好措施啊。
ArrayObject::__construct -- Construct a new array object

<?php
$array = array('1' => 'one',
'2' => 'two',
'3' => 'three');

$arrayobject = new ArrayObject($array);

print_r($arrayobject);
?>

ArrayObject Object
(
    [1] => one
    [2] => two
    [3] => three
)

考察了一下目的转换为数组,也足以强制转变

$arr = (array)$obj;

经常来讲例子转变结果,可比照:

Tag Object
(
    [name] => main
    [text] =>
    [parrent] =>
    [content] =>
    [props教程] => Array
        (
        )

    [inner] => Array
        (
        )

    [level] => 0
)

Array
(
    [name] => main
    [text] =>
    [parrent] =>
    [content] =>
    [props] => Array
        (
        )

    [inner] => Array
        (
        )

    [level] => 0
)

本文由金沙澳门官网送注册58发布于计算机网络,转载请注明出处:php简单对象与数组的转换函数代码,php数组与对

关键词: