我不确定为什么会有这种负面声誉。建议的重复问题仅处理数组中的相同项。我正在寻找那个阵列中只有一个项目具有相同值的数组。
这是我的问题:
我需要根据其中一个键的值从多维数组中删除项目。这是一个数组样本。实际数组有3,000个项目。
Array
(
[0] => Array
(
[ID] => 1553
[Title] => Red Mini Dress
[Size] => 8
[Availability] => In stock
)
[1] => Array
(
[ID] => 1554
[Title] => Red Mini Dress
[Size] => 10
[Availability] => Out of stock
)
[2] => Array
(
[ID] => 1555
[Title] => Red Mini Dress
[Size] => 12
[Availability] => In stock
)
[3] => Array
(
[ID] => 2430
[Title] => Black Cotton Trousers
[Size] => 14
[Availability] => In stock
)
...
)
所以你可以看到一些物品,比如“红色迷你连衣裙”,被列出了好几次。这是因为该项目的每个大小都有一个条目。
您还可以看到“红色迷你连衣裙”的尺寸8和12有库存,但不是10号。
现在,我需要减少数组,以便为每个产品只显示一个条目。除非所有尺码都缺货,否则Availability
的值应为In stock
。
因此,对于上面的例子,“Red Mini Dress”应该只有一个条目,它应该是In stock
。
到目前为止,我已尝试使用此方法,该方法根据ID的大小对数组进行排序:
function reduce_products($items) {
$reduced = array();
for($i = 0; $i < sizeof($items); $i++) {
if (!array_key_exists($items[$i]['id'], $reduced) || $reduced[$items[$i]['id']]['title'] > $items[$i]['title'])
$reduced[$items[$i]['id']] = $items[$i];
}
return $reduced;
}
代码改编自Removing duplicate values in Multi-Dimensional Array?
但这并没有删除任何值。
答案 0 :(得分:0)
PHP 5.5+,您可以使用array_column。
<强>脚本强>
<?php
$arr= array(
array( 'Id' => 111,
'Title' => "foo",
'Number' => 15
),
array( 'Id' => 111,
'Title' => "foo",
'Number' => 15
),
array( 'Id' => 125,
'Title' => "bar",
'Number' => 15
)
);
var_dump(array_unique(array_column($arr, 'Id')));
?>
<强>输出:强>
array(2) {
[0]=>
int(111)
[2]=>
int(125)
}
答案 1 :(得分:0)
试试这个:
null
constructor(){}
输出:
<?php
$array = [
[
'ID' => 1553,
'Title' => 'Red Mini Dress',
'Size' => 8,
'Availability' => 'In stock',
],
[
'ID' => 1554,
'Title' => 'Red Mini Dress',
'Size' => 10,
'Availability' => 'Out of stock',
],
[
'ID' => 1555,
'Title' => 'Red Mini Dress',
'Size' => 12,
'Availability' => 'In stock',
],
[
'ID' => 2430,
'Title' => 'Black Cotton Trousers',
'Size' => 14,
'Availability' => 'In stock',
],
];