我只想从多维集合中删除一列。
$z = collect( ["x"=>"a", "y"=>"b", "z"=>"c"], ["x"=>"c", "y"=>"d", "z"=>"e"] ); $z->deleteColumn("x");
字符串$z现在应该有数据集:
[ ["y"=>b", "z"=> "c"] ["y"=>d", "z"=> "e"] ]
型我可以使用一个Map函数与except,但有没有一个简单的一行我错过了?这看起来很常见。
f1tvaqid1#
使用transform()方法:
transform()
$collection->transform(function($i) { unset($i->x); return $i; });
字符串
vyu0f0g12#
最好设置需要的内容,而不是删除不需要的内容。您将拥有易于扩展和修改的代码。将transform()方法与only()沿着使用:
only()
$collection->transform(function($item) { return $item->only(['y', 'z']); });
wgxvkvu93#
我迟到了,但这也可以通过以下方式完成:
$collection->transform(function(array $item) { return Arr::except($item, 'x'); });
y3bcpkx14#
$syncData = $z->map(function($attr){ return Arr::only($attr, ['y', 'z']); });
字符串Laravel 8.*
llycmphe5#
你可以使用Laravel的pluck方法,像这样:
$z = collect([ ["x"=>"a", "y"=>"b"], ["x"=>"c", "y"=>"d"] ); $z = $z->pluck('y'); //["b", "d"]
qlzsbp2j6#
最后我给Collection类写了一个宏。
/** * Pass array or string of key column names to remove */ Collection::macro('removeCols', function ($except) { if (!is_array($except)) $except = (array)$except; // Single Dimensional arrays if (!is_array($this->first()) && !is_object($this->first())) return $this->except($except); // Multi Dimensional arrays $out = $this->map(function ($item) use ($except) { $item = collect($item); return $item->except($except)->toArray(); }); return collect($out); });
xpcnnkqh7#
单线解
$collections->transform(fn ($item) => Arr::except($item, 'column'));
7条答案
按热度按时间f1tvaqid1#
使用
transform()
方法:字符串
vyu0f0g12#
最好设置需要的内容,而不是删除不需要的内容。您将拥有易于扩展和修改的代码。
将
transform()
方法与only()
沿着使用:字符串
wgxvkvu93#
我迟到了,但这也可以通过以下方式完成:
字符串
y3bcpkx14#
字符串
Laravel 8.*
llycmphe5#
你可以使用Laravel的pluck方法,像这样:
字符串
qlzsbp2j6#
最后我给Collection类写了一个宏。
字符串
xpcnnkqh7#
单线解
字符串