php 对象怎么转换成数组

不及物动词 其他 94

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    PHP对象可以使用强制类型转换的方式将其转换为数组。以下是将PHP对象转换为数组的几种方法:

    方法一:使用 (array) 强制类型转换

    通过将对象前面加上 (array) 强制类型转换操作符,可以将PHP对象转换为数组。这将返回一个数组,其中键名是对象的属性名称,键值是属性的值。

    示例代码如下:

    $obj = new stdClass();
    $obj->name = ‘John’;
    $obj->age = 25;

    $arr = (array) $obj;

    print_r($arr);

    输出结果如下:

    Array
    (
    [name] => John
    [age] => 25
    )

    方法二:使用 get_object_vars() 函数

    get_object_vars() 是一个内置函数,用于获取对象的属性列表,并返回一个关联数组。该数组的键名是对象的属性名称,键值是属性的值。

    示例代码如下:

    $obj = new stdClass();
    $obj->name = ‘John’;
    $obj->age = 25;

    $arr = get_object_vars($obj);

    print_r($arr);

    输出结果如下:

    Array
    (
    [name] => John
    [age] => 25
    )

    方法三:使用 json_decode() 和 json_encode() 函数

    可以将对象转换为JSON格式,然后再将JSON格式转换为数组。json_decode() 函数用于将JSON字符串转换为PHP对象或数组,json_encode() 函数用于将PHP对象或数组转换为JSON字符串。

    示例代码如下:

    $obj = new stdClass();
    $obj->name = ‘John’;
    $obj->age = 25;

    $json_str = json_encode($obj);
    $arr = json_decode($json_str, true);

    print_r($arr);

    输出结果如下:

    Array
    (
    [name] => John
    [age] => 25
    )

    通过上述几种方法,可以将PHP对象转换为数组,方便在处理数据时进行操作。每种方法都适用于不同的场景,请根据具体需求选择合适的方法进行转换。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在 PHP 中,对象可以通过使用类型强制转换或序列化来转换为数组。

    1. 类型强制转换:
    在 PHP 中,可以使用 (array) 或者 (object) 的方式来进行类型强制转换。

    示例代码:
    “`php
    class MyClass {
    public $name = “John”;
    public $age = 25;
    }

    $obj = new MyClass();

    // 使用 (array) 进行类型强制转换
    $arr = (array) $obj;

    print_r($arr);
    “`
    输出结果:
    “`
    Array
    (
    [name] => John
    [age] => 25
    )
    “`

    2. 序列化:
    PHP 中的对象可以通过使用内置的 serialize() 函数将其序列化为一个字符串。然后可以使用 unserialize() 函数将字符串转换回对象。

    示例代码:
    “`php
    class MyClass {
    public $name = “John”;
    public $age = 25;
    }

    $obj = new MyClass();

    // 序列化对象为字符串
    $serializedObj = serialize($obj);

    // 将字符串转换回对象
    $newObj = unserialize($serializedObj);

    print_r($newObj);
    “`
    输出结果:
    “`
    MyClass Object
    (
    [name] => John
    [age] => 25
    )
    “`

    3. 使用 get_object_vars() 函数:
    get_object_vars() 函数可以返回一个对象的属性和属性值的关联数组。

    示例代码:
    “`php
    class MyClass {
    public $name = “John”;
    public $age = 25;
    }

    $obj = new MyClass();

    $array = get_object_vars($obj);

    print_r($array);
    “`
    输出结果:
    “`
    Array
    (
    [name] => John
    [age] => 25
    )
    “`

    4. 使用 JSON 编码和解码:
    可以使用 json_encode() 函数将对象编码为 JSON 字符串,然后使用 json_decode() 函数将 JSON 字符串解码为数组。

    示例代码:
    “`php
    class MyClass {
    public $name = “John”;
    public $age = 25;
    }

    $obj = new MyClass();

    // 将对象编码为 JSON 字符串
    $json = json_encode($obj);

    // 将 JSON 字符串解码为数组
    $array = json_decode($json, true);

    print_r($array);
    “`
    输出结果:
    “`
    Array
    (
    [name] => John
    [age] => 25
    )
    “`

    5. 使用迭代方法:
    可以通过实现 \Iterator 接口来使对象可迭代,并在对象上实现迭代器方法,将属性和属性值作为数组返回。

    示例代码:
    “`php
    class MyClass implements \Iterator {
    public $name = “John”;
    public $age = 25;

    private $position = 0;

    public function rewind() {
    $this->position = 0;
    }

    public function current() {
    $vars = get_object_vars($this);
    $keys = array_keys($vars);
    return $vars[$keys[$this->position]];
    }

    public function key() {
    $vars = get_object_vars($this);
    $keys = array_keys($vars);
    return $keys[$this->position];
    }

    public function next() {
    $this->position++;
    }

    public function valid() {
    $vars = get_object_vars($this);
    $keys = array_keys($vars);
    return isset($keys[$this->position]);
    }
    }

    $obj = new MyClass();

    $array = [];
    foreach ($obj as $key => $value) {
    $array[$key] = $value;
    }

    print_r($array);
    “`
    输出结果:
    “`
    Array
    (
    [name] => John
    [age] => 25
    )
    “`
    以上是将 PHP 对象转换为数组的几种方法。你可以根据实际需求选择适合的方法来完成转换。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在 PHP 中,可以使用类型转换或者自定义方法来将对象转换为数组。

    1. 使用类型转换符将对象转换为数组
    通过使用类型转换符将对象转换为数组,PHP 会根据对象的属性将其转换为关联数组。可以使用 `(array)` 或者 `settype()` 函数来实现,如下所示:
    “`php
    class Person {
    public $name;
    public $age;

    public function __construct($name, $age) {
    $this->name = $name;
    $this->age = $age;
    }
    }

    $person = new Person(‘John’, 25);
    $array = (array) $person;
    print_r($array);
    “`
    输出结果:
    “`
    Array
    (
    [name] => John
    [age] => 25
    )
    “`

    2. 使用自定义方法将对象转换为数组
    可以在对象中定义一个方法,通过该方法将对象转换为数组。该方法需要返回一个数组类型的值,其中包含对象的属性。示例如下:
    “`php
    class Person {
    public $name;
    public $age;

    public function __construct($name, $age) {
    $this->name = $name;
    $this->age = $age;
    }

    public function toArray() {
    return [
    ‘name’ => $this->name,
    ‘age’ => $this->age
    ];
    }
    }

    $person = new Person(‘John’, 25);
    $array = $person->toArray();
    print_r($array);
    “`
    输出结果:
    “`
    Array
    (
    [name] => John
    [age] => 25
    )
    “`

    3. 递归转换嵌套对象
    如果对象中包含其他对象,可以使用递归的方式将嵌套对象转换为数组。以下是一个示例:
    “`php
    class Person {
    public $name;
    public $age;
    public $address;

    public function __construct($name, $age, $address) {
    $this->name = $name;
    $this->age = $age;
    $this->address = $address;
    }
    }

    class Address {
    public $city;
    public $country;

    public function __construct($city, $country) {
    $this->city = $city;
    $this->country = $country;
    }
    }

    $address = new Address(‘New York’, ‘USA’);
    $person = new Person(‘John’, 25, $address);

    function objectToArray($object) {
    if (is_object($object)) {
    $object = get_object_vars($object);
    }
    if (is_array($object)) {
    return array_map(‘objectToArray’, $object);
    }
    else {
    return $object;
    }
    }

    $array = objectToArray($person);
    print_r($array);
    “`
    输出结果:
    “`
    Array
    (
    [name] => John
    [age] => 25
    [address] => Array
    (
    [city] => New York
    [country] => USA
    )

    )
    “`

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部