将新属性附加到对象

问题描述 投票:0回答:3

以下是laravel通过eloquent从数据库返回的当前数组。我想将一些东西推入数组中,我可以知道如何做吗?

返回的数据

Company Object ( 
[attributes] => Array ( 
    [id] => 1 
    [company_name] => superman 
    [company_fullname] => Superman Ent. ) 
[original] => Array ( 
    [id] => 1 
    [company_name] => superman 
    [company_fullname] => Superman Ent. ) 
[relationships] => Array ( ) 
[exists] => 1 
[includes] => Array ( ) ) 

虽然我可以通过 foreach 数组调用它并通过 {{ $x->company_name }} 访问。我想用一些自定义信息(例如成员总数)扩展数组?

我尝试过这种方式,但失败了。

$temp = array("count" => "1232");
array_push($companyInfo, $temp);

我收到了这个

array_push() 期望参数 1 是数组,给定对象

更新 公司信息数组是由laravel返回的,由于我的愚蠢和粗心(几天不眠之夜+_+)我没有注意到所有的东西都在['attributes']里面!可以通过以下答案中应用的方法来访问数据。

{{ $x['attributes']['company_name'] }}
{{ $x[0]['count'] }}
php arrays laravel object
3个回答
3
投票

$CompanyInfo 在你的例子中是一个对象。您需要指定一个命名参数来保存 $temp 数组信息:

$temp = array("count" => "1232");
$companyInfo->temp = $temp;

或者将对象转换为数组:

$temp = array("count" => "1232");
$companyInfo = (array) $companyInfo;
array_push($companyInfo, $temp);

2
投票

尝试使用 array_push 函数来实现:

$temp = array("count" => "1232");
$temp[] = $companyInfo;

$temp = array("count" => "1232");
$temp['companyInfo'] = $companyInfo;
$temp['companyInfo']->getSomeData();

1
投票

您遇到了 array_push 错误,因为您传递了一个对象而不是数组。

你几乎是对的,只需进行以下更改,

$companyInfo = (array)$companyInfo;

array_push($companyInfo, $temp);
© www.soinside.com 2019 - 2024. All rights reserved.