我正在从Facebook API响应中构建一个集合。
$ads = new \Illuminate\Support\Collection;
if (!$ads->has($insight[$key])) {
$ads->put($insight[$key], [
'ad_id' => $insight[AdsInsightsFields::AD_ID],
'ad_name' => $insight[AdsInsightsFields::AD_NAME],
'ctr' => (float)$insight[AdsInsightsFields::CTR],
'spend' => (float)$insight[AdsInsightsFields::SPEND],
]);
} else {
// Increment spend value here.
}
如果这是一个数组,我会这样做:
$ads[$insight[$key]]['spend'] += $insight[AdsInsightsFields::SPEND];
如何在收藏夹上做到这一点?
答案 0 :(得分:0)
$ads->{$insight[$key]}['spend'] += $insight[AdsInsightsFields::SPEND];
看起来有些奇怪,但是您需要以对象属性->propertyName
的形式访问第一部分,该属性名称是您从数组$insight[$key]
中获取的,因此您需要在括号周围加上括号,最后,您需要使用该属性的末尾带有[spend]
的数组键。
答案 1 :(得分:0)
第一件事,这是数组的集合(而不是集合的集合)。
您的问题是如何在集合中获取特定的键值对,
答案是集合上的“ get()”函数。 现在您只需按如下所示增加“支出”值即可。
$ads->get($insight[$key])['spend'] += $insight[AdsInsightsFields::SPEND];
注意
如果您需要整个东西作为集合,请更新代码以如下所示收集集合
$ads->put($insight[$key], collection([
'add_id' => $insight[AdsInsightsFields::AD_ID],
'ad_name' => $insight[AdsInsightsFields::AD_NAME],
'ctr' => (float)$insight[AdsInsightsFields::CTR],
'spend' => (float)$insight[AdsInsightsFields::SPEND],
]);
然后您可以按以下方式增加支出值。
$ads->get($insight[$key])->spend += $insight[AdsInsightsFields::SPEND];
答案 2 :(得分:0)
为解决这个问题,我编写了能够执行所需更新的宏。
/dev/media10
有了这个,我所要做的就是:
select regexp_replace(column_name, '[[:space:]]+', chr(32)) from table_name;
如果我只想设置一个值,无论键是否存在,我都可以这样做:
UPDATE table_name
SET column_name = REGEXP_REPLACE (column_name ,'[[:space:]]+',' ');