php - 根据某些条件从数组中删除一些行
问题描述
我有一个数组,其中包含三列 ID、产品代码、库存
如何从数组中删除旧的股票条目?
我可以通过循环删除它,但寻找简单的解决方案。
大批
Array
(
[0] => Array
(
[Id] => 1
[ProductCode] => 4353
[TotalStock] => 10
)
[1] => Array
(
[Id] => 1
[ProductCode] => 4354
[TotalStock] => 80
)
[2] => Array
(
[Id] => 1
[ProductCode] => 4353
[TotalStock] => 60
)
[3] => Array
(
[Id] => 1
[ProductCode] => 4355
[TotalStock] => 30
)
[4] => Array
(
[Id] => 1
[ProductCode] => 4353
[TotalStock] => 20
)
[5] => Array
(
[Id] => 1
[ProductCode] => 4356
[TotalStock] => 40
)
)
预期产出
Array
(
[0] => Array
(
[Id] => 1
[ProductCode] => 4354
[TotalStock] => 80
)
[1] => Array
(
[Id] => 1
[ProductCode] => 4355
[TotalStock] => 30
)
[2] => Array
(
[Id] => 1
[ProductCode] => 4353
[TotalStock] => 60
)
[3] => Array
(
[Id] => 1
[ProductCode] => 4356
[TotalStock] => 40
)
)
解决方案
我认为您只需要覆盖特定 productId 的子数组(内部数组)即可获得最新信息。我们可以使用ProductCode
as 键来过滤掉重复项:
$csv_mod = array(); // initializing variable to store latest values
foreach ($csv as $obj) {
if ( isset($csv_mod[$obj['ProductCode']])
&& $csv_mod[$obj['ProductCode']]['TotalStock'] < $obj['TotalStock'] ) {
// This will overwrite if a duplicate value with higher stock appears
$csv_mod[$obj['ProductCode']] = $obj;
} else {
// First time encountered in the loop
$csv_mod[$obj['ProductCode']] = $obj;
}
}
推荐阅读
- tensorflow - Tensorflow:使用batch_norm函数时,在一层的“moving_variance”中获取NaN
- php - 如何输出列表的倒数
- json - 在 IONIC 应用程序中省略 CORS
- oracle - 如何在不指定模式名称的情况下定义可从任何模式调用的 PUBLIC Oracle 函数?
- dc.js - 每个条目具有多个类别的 Sunburst
- json - 您如何编组 sql.NullString 以使输出变平以仅给出 go 中的值?
- ffmpeg - 如何将ffprobe结果保存在json中
- python - 使用 Python 数据库中的数组创建一个有效的 JSON
- java - 在自定义图库中查找所选图像的图像大小
- javascript - 如何将 Javascript 代码从 PHP 文件传递到 JS 文件