我有一个包含字段的数组:
$products = array(
[0] => array('name' => 'product_one', 'category' => 'category_one', employee => '3234'),
[1] => array('name' => 'product_two', 'category' => 'category_two', employee => '5421'),
[2] => array('name' => 'product_three', 'category' => 'category_one', employee => '3234'),
[3] => array('name' => 'product_one', 'category' => 'category_one', employee => '2153'),
[4] => array('name' => 'product_one', 'category' => 'category_two', employee => '6312')
)
现在,在这种情况下,employee
字段并不重要,但是product
/ category
的组合是唯一的。
想要的结果:
$products = array(
[0] => array('name' => 'product_one', 'category' => 'category_one', employee => '3234'),
[1] => array('name' => 'product_two', 'category' => 'category_two', employee => '5421'),
[2] => array('name' => 'product_three', 'category' => 'category_one', employee => '3234'),
[4] => array('name' => 'product_one', 'category' => 'category_two', employee => '6312')
)
任何想法最佳方法是什么?在生产中,我有30.000多个元素,通常大约有10个重复项。同样在真实数据库中,我有12个字段,并且其中4个字段的组合需要唯一)。
[如果您不介意保留哪个重复项,则遍历循环可能是最简单的,使用键组合所需的唯一值组成一个新数组(我使用了##
的分隔符在这段代码中,您可以使用值中出现cannot的任何内容。这样,由于数组不能具有相同的键,重复项将被自动删除。循环完成后,可以使用array_values
重新对输出数组进行数字索引:
$output = array();
foreach ($products as $p) {
$output["{$p['name']}##{$p['category']}"] = $p;
}
$output = array_values($output);
print_r($output);
输出(用于样本数据):
Array
(
[0] => Array
(
[name] => product_one
[category] => category_one
[employee] => 2153
)
[1] => Array
(
[name] => product_two
[category] => category_two
[employee] => 5421
)
[2] => Array
(
[name] => product_three
[category] => category_one
[employee] => 3234
)
[3] => Array
(
[name] => product_one
[category] => category_two
[employee] => 6312
)
)