Rad*_*duS 4 php multidimensional-array
我有这个数组
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)
)
Run Code Online (Sandbox Code Playgroud)
我想这样结束:
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)
)
Run Code Online (Sandbox Code Playgroud)
重要的是转换后的数组键值必须相同。
目前我使用这个解决方案:
$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;
Run Code Online (Sandbox Code Playgroud)
这会删除重复的数组,但也会重置键值。
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)
)
Run Code Online (Sandbox Code Playgroud)
如何保留原始数组键值?
使用可选$key的foreach():
foreach ( $originalArray AS $key => $line ) {
if ( !in_array($line['name'], $usedFruits) ) {
$usedFruits[] = $line['name'];
$newArray[$key] = $line;
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
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
)
)
Run Code Online (Sandbox Code Playgroud)