PHP 7 - 警告:array_column() 期望参数 1 是数组,给定对象

我刚刚在我的项目中发现了一些奇怪的东西。我正在使用 PHP7.3,我正在尝试将array_column()函数与对象一起使用。


我正在使用命令来调用 symfony 项目中的服务 - 如果这很重要,但是我已将我的代码简化到最低限度。


文章.php:


class Article {

    private $id;

    private $category;


    public function __construct()

    {

        $this->category = new ArrayCollection();

    }


    public function getCategory(): Collection

    {

        return $this->category;

    }


    public function addCategory(ArticleCategory $category): self

    {

        if (!$this->category->contains($category)) {

            $this->category[] = $category;

        }


        return $this;

    }


    public function removeCategory(ArticleCategory $category): self

    {

        if ($this->category->contains($category)) {

            $this->category->removeElement($category);

        }


        return $this;

    }

}

ArticleCategory.php


class ArticleCategory

{

    private $id;

    private $name;


    public function getName(): ?string

    {

        return $this->name;

    }


    public function setName(string $name): self

    {

        $this->name = $name;


        return $this;

    }

我正在尝试将文章的类别作为数组获取 - 对于这种情况,我使用以下内容:


$categories = array_column($a->getCategory(), 'name'); //$a is the article object


但是,这会引发以下警告: Warning: array_column() expects parameter 1 to be array, object given

我已经尝试过的

  • private $name公开_

  • 添加功能__get()__isset()使用private $name

但是,这些都不适合我。即使 array_column 应该与 PHP >7 中的对象一起使用?我很感激任何帮助


慕的地6264312
浏览 505回答 1
1回答

宝慕林4294392

如果你需要数组使用这个$categories = $a->getCategory()->toArray();如果您需要类别名称数组 - 使用数组映射$categoriesName = $a->getCategory()->map(function(ArticleCategory $category) {     return $category->getName(); });
打开App,查看更多内容
随时随地看视频慕课网APP