php一个数组赋值给对象,php数组与对象相互转换方法

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;

}

关于数组转换为对象,在phpx有看到一些帖子讨论

$andy = array();

$andy['a'] = 1;

$andy['b'] = 2;

$andy['c'] = 3;

把andy强制转换为数组,似乎引用的方便些了,主要是变成了->

$andy = array();

$andy = (object)$andy;

$andy->a = 1;

$andy->b = 2;

$andy->c = 3;

还嫌它麻烦,再用StdClass

$andy = new StdClass;

$andy->a = 1;

$andy->b = 2;

$andy->c = 3;

stdClass 是PHP的一个基类,所有的类几乎都继承这个类,所以任何时候都可以被new,可以

让这个变量成为一个object。同时,这个基类又有一个特殊的地方, 就是没有方法。在这里

还有一点是对象和数组资源耗费的问题:PHP5的对象的独特性,对象在任何地方被调用,都

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

是引用一个拷贝。数组在程序的使用中应该是最方便的,然而数组的每次被引用($a = $b)

,其实都是创建了一个副本,而且,数组被unset后,还是占用了内存(没有测试过)。还有

一个函数arrayobject,可以直接将数组转化为 对象这也是一个好办法哦。

ArrayObject::__construct -- Construct a new array object

$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

)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: <?php $data = public_function(); $serializedData = serialize($data); file_put_contents('data.ser', $serializedData); ?> ### 回答2: 要将 public function 中得到的数组存储到本地,可以使用 PHP 的文件操作函数来实现。以下是一个示例代码: ```php <?php class MyClass { public function getArray() { // 在这里创建一个数组 $myArray = array("apple", "banana", "orange"); // 返回数组 return $myArray; } } // 实例化 MyClass 类 $myObj = new MyClass(); // 调用 getArray 方法得到数组 $array = $myObj->getArray(); // 将数组保存到本地 $file = 'array.txt'; // 保存数组的文件名 $data = serialize($array); // 将数组转为字符串格式,方便存储 // 打开文件,以写入模式打开或创建文件 $handle = fopen($file, 'w'); // 写入数据到文件 fwrite($handle, $data); // 关闭文件 fclose($handle); echo "数组已成功保存到本地文件。"; ?> ``` 上面的代码中,首先定义了一个名为 "MyClass" 的类,其中有一个 public function "getArray"。在这个方法中,我们创建了一个数组,并将其返回。 然后,我们实例化了 "MyClass" 类,并调用了 "getArray" 方法来获取数组。接下来,我们使用 PHP 的文件操作函数将数组保存到本地文件。 在示例代码中,我们指定了文件名为 "array.txt",将数组使用 serialize 方法转换为字符串格式,然后将字符串写入到文件中。最后,我们关闭文件,并输出一条成功保存的消息。 通过运行上面的代码,你将在同一目录下创建一个名为 "array.txt" 的文件,其中包含了我们之前获取的数组数据。 ### 回答3: 要将public function中得到的数组储存到本地,可以使用PHP内置的文件操作函数来实现。 首先,需要确定将数组储存在本地的哪个文件中。假设我们将数组储存在一个名为data.txt的文本文件中。 下面是一个示例的PHP代码: <?php // 定义一个类,包含一个public function,该函数返回一个数组 class MyClass { public function getArray() { // 这里可以根据实际情况构建要返回的数组 $array = array("apple", "banana", "orange"); return $array; } } // 创建一个类的实例 $obj = new MyClass(); // 调用类中的public function,得到返回的数组 $array = $obj->getArray(); // 将数组转换为字符串 $data = implode(",", $array); // 打开文件data.txt并写入数据,如果文件不存在则创建它 $file = fopen("data.txt", "w"); fwrite($file, $data); fclose($file); echo "数组已成功储存到本地文件data.txt。"; ?> 以上代码首先定义了一个类MyClass,其中包含一个public function getArray(),该函数返回一个数组。我们创建了一个该类的实例$obj,并调用了该实例的getArray()函数,将返回的数组赋值给变量$array。 接下来,我们使用implode()函数将数组$array转换为字符串$data,数组元素之间用逗号分隔。 然后,我们使用fopen()函数以写入模式打开文件data.txt,并将$data写入文件中,最后关闭文件。 最后,将数组储存到本地的过程完成,输出提示信息"数组已成功储存到本地文件data.txt"。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值