PHP有一个方法将带有对象的数组转换为具有对象的给定方法输出的数组吗?

时间:2018-01-31 14:48:26

标签: php arrays

我将尝试用一个例子解释我想用这个方法完成的事情:

您有一个对象Person,其方法getName()会返回PersonName

[PersonA, PersonB]转换为[PersonNameA, PersonNameB]

我知道PHP有一个方法array_column来通过属性实现此目的。但我想知道是否还有一种方法可以用对象的方法来做到这一点。

1 个答案:

答案 0 :(得分:1)

要扩展评论中提到的array_map() @axiax的使用情况,您可以为它提供第一个参数的闭包:

<?php

class Person
{
    private $name;

    public function setName($name)
    {
        $this->name = $name;
    }

    public function getName()
    {
        return $this->name;
    }
}

$personA = new Person();
$personB = new Person();

$personA->setName('bob');
$personB->setName('alice');

$objects = [
    $personA,
    $personB
];

$names = array_map(
    function(Person $p) {
        return $p->getName();
    },
    $objects
);

var_dump($names); // ['bob', 'alice']