[英]Remove duplicates in MultiDimensional array and keep the original array key value
我有這個數組
Array (
[0] => Array ( [name] => Apple [amount] => 1)
[1] => Array ( [name] => Apple [amount] => 2)
[2] => Array ( [name] => Orange [amount] => 3)
[3] => Array ( [name] => Orange [amount] => 4)
[4] => Array ( [name] => Banana [amount] => 5)
[5] => Array ( [name] => Pear [amount] => 6)
)
我最終會這樣結束:
Array (
[0] => Array ( [name] => Apple [amount] => 1)
[2] => Array ( [name] => Orange [amount] => 3)
[4] => Array ( [name] => Banana [amount] => 5)
[5] => Array ( [name] => Pear [amount] => 6)
)
重要的是轉換后數組鍵值必須相同。
目前我使用這個解決方案:
$newArray = array();
$usedFruits = array();
foreach ( $originalArray AS $line ) {
if ( !in_array($line['name'], $usedFruits) ) {
$usedFruits[] = $line['name'];
$newArray[] = $line;
}
}
$originalArray = $newArray;
$newArray = NULL;
$usedFruits = NULL;
這將刪除重復的數組,但它也會重置鍵值。
Array (
[0] => Array ( [name] => Apple [amount] => 1)
[1] => Array ( [name] => Orange [amount] => 3)
[2] => Array ( [name] => Banana [amount] => 5)
[3] => Array ( [name] => Pear [amount] => 6)
)
如何保留原始數組鍵值?
使用foreach()
的可選$key
:
foreach ( $originalArray AS $key => $line ) {
if ( !in_array($line['name'], $usedFruits) ) {
$usedFruits[] = $line['name'];
$newArray[$key] = $line;
}
}
輸出:
Array
(
[0] => Array
(
[name] => Apple
[amount] => 1
)
[2] => Array
(
[name] => Orange
[amount] => 3
)
[4] => Array
(
[name] => Banana
[amount] => 5
)
[5] => Array
(
[name] => Pear
[amount] => 6
)
)
所有你必須使用的是未設置的功能。
unset函數從指定索引處的數組中刪除一個項而不重新設置數組索引。
代碼如下
$originalArray = array(
array("name" => "Apple", "amount" => 1),
array("name" => "Apple", "amount" => 2),
array("name" => "Orange", "amount" => 3),
array("name" => "Orange", "amount" => 4),
array("name" => "Banana", "amount" => 5),
array("name" => "Peer", "amount" => 6)
);
$seenItems = array();
foreach($originalArray as $index => $item){
if(in_array($item["name"], $seenItems))
unset($originalArray[$index]);
else
$seenItems[] = $item["name"];
}
輸出如下
array(4) {
[0]=>
array(2) {
["name"]=>
string(5) "Apple"
["amount"]=>
int(1)
}
[2]=>
array(2) {
["name"]=>
string(6) "Orange"
["amount"]=>
int(3)
}
[4]=>
array(2) {
["name"]=>
string(6) "Banana"
["amount"]=>
int(5)
}
[5]=>
array(2) {
["name"]=>
string(4) "Peer"
["amount"]=>
int(6)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.