gpt4 book ai didi

php - php中的对象->toArray()转换

转载 作者:行者123 更新时间:2023-12-03 23:15:09 25 4
gpt4 key购买 nike

我想将一个对象转换为一个数组,所以我可以用一个循环对其进行迭代。
我知道:

$array = (array) $object 

存在。但我想要一些像习惯这样的东西
__toString() 

数组的方法。
我知道到目前为止
__toArray()

不存在。
问题:
我可以自定义创建这种魔术方法吗?如何创建?
(我也知道这样一个事实,我可以通过调用一个返回数组的函数来解决这个问题)

我想将 Object 转换为自定义数组:
foreach($object as $key=>$value) {}

不通过调用函数来转换它
foreach($object->toArray as $key=>$value){}

即使这将是最简单的方法......

最佳答案

这很容易。只需使用 get_object_vars()
https://secure.php.net/manual/en/function.get-object-vars.php

<?php

class Person
{
private $name = 'delboy1978uk';
private $age = 40;

public function toArray()
{
return get_object_vars($this);
}
}


$person = new Person();
var_dump($person->toArray());

这给了你:
array(2) { ["name"]=> string(12) "delboy1978uk" ["age"]=> int(40) }

见这里: https://3v4l.org/1TWrG

现在,假设你想在几个类中使用它。您可以创建一个基类并对其进行扩展,也可以将其设为特征:
<?php

class ArrayableObject
{
public function toArray()
{
return get_object_vars($this);
}
}

class Person extends ArrayableObject
{
private $name = 'delboy1978uk';
private $age = 40;
}

在我看来,如果你在 trait 中使用它会更灵活,那么你就不会与基类绑定(bind):
<?php    

trait CastableToArray
{
public function toArray()
{
return get_object_vars($this);
}
}

class Person
{
use CastableToArray;

private $name = 'delboy1978uk';
private $age = 40;
}

关于php - php中的对象->toArray()转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52441204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com