PHP 7 - 警告:array_column() 要求参数 1 为数组,给定对象
PHP 7 - Warning: array_column() expects parameter 1 to be array, object given
我刚刚在我的项目中发现了一些奇怪的东西。我正在使用 PHP7.3,我正在尝试对对象使用 array_column()
函数。
我正在使用命令调用 symfony 项目中的服务 - 如果这很重要,但是我已将我的代码简化到最低限度。
Article.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
public
- 将函数
__get()
和 __isset()
添加到 private $name
但是 none 这对我有用。即使 array_column 应该与 PHP >7 中的对象一起使用?
感谢您的帮助
如果你需要数组使用这个$categories = $a->getCategory()->toArray();
如果您需要类别名称数组 - 使用数组映射
$categoriesName = $a->getCategory()->map(function(ArticleCategory $category) {
return $category->getName();
});
我刚刚在我的项目中发现了一些奇怪的东西。我正在使用 PHP7.3,我正在尝试对对象使用 array_column()
函数。
我正在使用命令调用 symfony 项目中的服务 - 如果这很重要,但是我已将我的代码简化到最低限度。
Article.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
public - 将函数
__get()
和__isset()
添加到private $name
但是 none 这对我有用。即使 array_column 应该与 PHP >7 中的对象一起使用? 感谢您的帮助
如果你需要数组使用这个$categories = $a->getCategory()->toArray();
如果您需要类别名称数组 - 使用数组映射
$categoriesName = $a->getCategory()->map(function(ArticleCategory $category) {
return $category->getName();
});