【发布时间】:2022-11-16 21:11:30
【问题描述】:
我想了解这两者之间的区别($bookingRows 是具有不同属性的对象数组)。
$vehicleRows = [];
foreach($bookingRows as $row) {
if($row->GroupCode == 'F') {
$vehicleRows[] = clone $row;
}
}
和
$vehicleRows = array_values(
array_filter($bookingRows, function ($row) {
return $row->GroupCode == 'F';
})
);
我的问题是,如果我修改 $vehicleRows 数组中的某些内容,它也会在原点 $bookingRows 中反映这些更改——这不是我想要的。我怎样才能避免源和过滤后的项目集之间出现这种不需要的引用?
【问题讨论】:
-
对象是总是通过引用传递。在第一个块中,您使用
clone获取对象的新副本。array_filter版本不克隆任何东西。
标签: php array-filter